java如何从xml文件中读取一个值

java如何从xml文件中读取一个值,第1张

java读取xml信息常用技术有dom解析和dom4J解析

dom4j是最常用的java解析xml技术,在使用时需要下载dom4jjar

具体解析方法可以参考一下内容

xml结构

<books> 

   <book id="001"> 

      <title>Harry Potter</title> 

      <author>J K Rowling</author> 

   </book> 

   <book id="002"> 

      <title>Learning XML</title> 

      <author>Erik T Ray</author> 

   </book> 

</books>

解析为List集合

import javaioFile;

import javautilList;

import orgdom4jAttribute;

import orgdom4jDocument;

import orgdom4jElement;

import orgdom4jioSAXReader;

public class Demo {

 public static void main(String[] args) throws Exception {

  SAXReader reader = new SAXReader();

  File file = new File("booksxml");

  Document document = readerread(file);

  Element root = documentgetRootElement();

  List<Element> childElements = rootelements();

  for (Element child : childElements) {

   //未知属性名情况下

   /List<Attribute> attributeList = childattributes();

   for (Attribute attr : attributeList) {

    Systemoutprintln(attrgetName() + ": " + attrgetValue());

   }/

   //已知属性名情况下

   Systemoutprintln("id: " + childattributeValue("id"));

   //未知子元素名情况下

   /List<Element> elementList = childelements();

   for (Element ele : elementList) {

    Systemoutprintln(elegetName() + ": " + elegetText());

   }

   Systemoutprintln();/

   //已知子元素名的情况下

   Systemoutprintln("title" + childelementText("title"));

   Systemoutprintln("author" + childelementText("author"));

   //这行是为了格式化美观而存在

   Systemoutprintln();

  }

 }

}

import w c dom ;

import javax xml parsers ;

import java io ;

public class Parse{

//Document可以看作是XML在内存中的一个镜像 那么一旦获取这个Document 就意味着可以通过对

//内存的 *** 作来实现对XML的 *** 作 首先第一步获取XML相关的Document

private Document doc=null;

public void init(String xmlFile) throws Exception{

//很明显该类是一个单例 先获取产生DocumentBuilder工厂

//的工厂 在通过这个工厂产生一个DocumentBuilder

//DocumentBuilder就是用来产生Document的

DocumentBuilderFactory dbf=DocumentBuilderFactory newInstance();

DocumentBuilder db=dbf newDocumentBuilder();

//这个Document就是一个XML文件在内存中的镜像

doc=db parse(new File(xmlFile));

}

//该方法负责把XML文件的内容显示出来

public void viewXML(String xmlFile) throws Exception{

this init(xmlFile);

//在xml文件里 只有一个根元素 先把根元素拿出来看看

Element element=doc getDocumentElement();

System out println( 根元素为: +element getTagName());

NodeList nodeList=doc getElementsByTagName( dbstore );

System out println( dbstore节点链的长度: +nodeList getLength());

Node fatherNode=em( );

System out println( 父节点为: +fatherNode getNodeName());

//把父节点的属性拿出来

NamedNodeMap attributes=fatherNode getAttributes();

for(int i= ;i<attributes getLength();i++){

Node attribute=em(i);

System out println( dbstore的属性名为: +attribute getNodeName()+ 相对应的属性值为: +attribute getNodeValue());

}

NodeList childNodes = fatherNode getChildNodes();

System out println(childNodes getLength());

for(int j= ;j<childNodes getLength();j++){

Node childNode=em(j);

//如果这个节点属于Element 再进行取值

if(childNode instanceof Element){

//System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());

System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());

}

}

}

public static void main(String[] args)throws Exception{

Parse parse=new Parse();

//我的XML文件

parse viewXML( netct xml );

}

lishixinzhi/Article/program/Java/hx/201311/26710

用XPath比较简单点也可以用xmldom

xmltype('<xml version="10" encoding="gbk">

<SERVICE>

<IDA_SVR_USERBILL>

<CALL_METHOD>queryProcessStepList</CALL_METHOD>

</IDA_SVR_USERBILL>

</SERVICE>')extract('//CALL_METHOD/child::text()')getstringval()

测试:

SELECT xmltype('<xml version="10" encoding="gbk">

<SERVICE>

<IDA_SVR_USERBILL>

<CALL_METHOD>queryProcessStepList</CALL_METHOD>

</IDA_SVR_USERBILL>

</SERVICE>')extract('//CALL_METHOD/child::text()')getstringval()

from dual;

已知有一个XML文件(bookstorexml)如下:

<xml version="10" encoding="gb2312">

<bookstore>

<book genre="fantasy" ISBN="2-3631-4">

<title>Oberon's Legacy</title>

<author>Corets, Eva</author>

<price>595</price>

</book>

</bookstore>

显示所有数据。

XmlNode xn=xmlDocSelectSingleNode("bookstore");

XmlNodeList xnl=xnChildNodes;

foreach(XmlNode xnf in xnl)

{

XmlElement xe=(XmlElement)xnf;

ConsoleWriteLine(xeGetAttribute("genre"));//显示属性值

ConsoleWriteLine(xeGetAttribute("ISBN"));

XmlNodeList xnf1=xeChildNodes;

foreach(XmlNode xn2 in xnf1)

{

ConsoleWriteLine(xn2InnerText);//显示子节点点文本

}

}

你说的是获取指定id下面的节点的属性值吧!

程序如下,其中equal(“”)双引号中的值为节点的属性值

属性值获取如下:

package saxbuilderibmxmlproperty;

import javaioFile;

import javaioIOException;

import javautilIterator;

import orgdom4jAttribute;

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jElement;

import orgdom4jioSAXReader;

import orgjdomJDOMException;

import orgjdominputSAXBuilder;

public class XmlProperty {

public Element element;

String path = "D:\\xml\\axml";

public void getElementProperty() {

File file = new File(path);

try {

SAXReader reader = new SAXReader();

Document dc = readerread(file);

Element e = dcgetRootElement();

// 节点值

Element child = (Element) egetQName("COMMAND");

Systemoutprintln(childtoString());

// 一级节点

for (Iterator iterator = eelementIterator(); iteratorhasNext();) {

Element el = (Element) iteratornext();

// 一级节点的属性信息

for (Iterator iterator2 = elattributeIterator(); iterator2

hasNext();) {

Attribute attribute = (Attribute) iterator2next();

if(attributegetName()equals("bodyCategory")){

Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());

}else{

Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());

}

// 二级节点

for (Iterator iterator3 = elelementIterator(); iterator3

hasNext();) {

Element ele = (Element) iterator3next();

// 二级节点的属性信息

for (Iterator iterator4 = eleattributeIterator(); iterator4

hasNext();) {

Attribute attribute1 = (Attribute) iterator4next();

if(attribute1getName()equals("cmdType")){

Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());

}else{

Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());

}

}

}

}

} catch (DocumentException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

以上就是关于java如何从xml文件中读取一个值全部的内容,包括:java如何从xml文件中读取一个值、JAVA读取xml文件中节点值、oracle 获取xml某个节点的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9489771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存