摘抄自:
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 获取注释