dom4j解析webservice返回XML例子

摘抄自:

http://wang09si.blog.163.com/blog/static/17017180420149145624941/

XML格式

150

0.5

10

25

47

47

10-AUG-14

2014/08/10

2014/09/28

201408

125

0.25

6.91

49

01506474

1.89

0

</item>

125

0.25

10

15

29

29

10-JUN-14

2014/06/10

2014/09/28

201406

110

0.9

9.57

110

01506474

1.89

0

</item>

110

0.9

10

24

45

45

10-APR-14

2014/04/10

2014/09/28

201404

86

0.54

23.08

171

01506474

1.89

0

</item>

</return>

</ns1 cdGasFyResponse>

</soap Body>

</soap Envelope>

解析(伪代码)

String res = httpUtil.doRequest();

Document personDoc;

try {

personDoc = new SAXReader().read(new StringReader(new String(res.getBytes(“iso-8859-1″),”GB2312”)));

Element rootElt = personDoc.getRootElement(); // 获取根节点

System.out.println(“根节点:” + rootElt.getName()); // 拿到根节点的名称

Iterator body = rootElt.elementIterator(“Body”);

while (body.hasNext()) {

Element recordEless = (Element) body.next();

Iterator cdGasFyResponse = recordEless.elementIterator(“cdGasFyResponse”);

while(cdGasFyResponse.hasNext()){

Element returnValue = (Element)cdGasFyResponse.next();

Iterator returnIt = returnValue.elementIterator(“return”);

while(returnIt.hasNext()){

Element items = (Element)returnIt.next();

Iterator itemIt = items.elementIterator(“item”);

while(itemIt.hasNext()){

Element item = (Element)itemIt.next();

System.out.println(item.elementTextTrim(“byds”));

System.out.println(item.elementTextTrim(“byye”));

}

}

}

}

常用API

class org.dom4j.io.SAXReader

  • read  提供多种读取xml文件的方式,返回一个Domcument对象

interface org.dom4j.Document

  • iterator  使用此法获取node
  • getRootElement  获取根节点

interface org.dom4j.Node

  • getName  获取node名字,例如获取根节点名称为bookstore
  • getNodeType  获取node类型常量值,例如获取到bookstore类型为1——Element
  • getNodeTypeName  获取node类型名称,例如获取到的bookstore类型名称为Element

interface org.dom4j.Element

  • attributes  返回该元素的属性列表
  • attributeValue  根据传入的属性名获取属性值
  • elementIterator  返回包含子元素的迭代器
  • elements  返回包含子元素的列表

interface org.dom4j.Attribute

  • getName  获取属性名
  • getValue  获取属性值

interface org.dom4j.Text

  • getText  获取Text节点值

interface org.dom4j.CDATA

  • getText  获取CDATA Section值

interface org.dom4j.Comment

  • getText  获取注释