dom4j获取某个已知节点的值:
可能犯的错误:
(1)没有引入jar包
需要两个jar包
jaxen-1.1-beta-6.jar
dom4j-1.6.1.jar
要处理的xml文件
<root>
<result><Answer>0001</Answer>
</result>
</root>
如果获取的xml报文是String格式
String content="<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" +
"<root>" +
"<result>"+
"<Answer>你好"+
"</Answer>"+
"</result>"+
"</root>";
//String类型转document类型的xml
Document document =null;
SAXReader reader = new SAXReader();
StringReader stringReader = new StringReader(content.trim());
document = reader.read(stringReader);
//获取根节点
Element root = document.getRootElement();
//根据节点名字从根节点开始找到需要的子节点,注意大写小
Node node=root.selectSingleNode("/root/result/Answer"); //(**************************需要区分大小写)
//获取节点的值
String noteContent=node.getText();
System.out.println(noteContent);
+2016年05月09日+
对于一个报文中有多个名字一样的节点该怎么处理呢?
selectNodes
/**
* 处理复杂的xml报文
* 即含有重复名字的报文
* @param args
*/
public static void twoNodeName(){
String xml="<root>" +
"<people>" +
"<name>name1</name>" +
"<age>10</age>" +
"</people>" +
"<people>" +
"<name>name3</name>" +
"<age>12</age>" +
"</people>" +
"</root>";
Document document=null;
try {
document = DocumentHelper.parseText(xml);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Node> nodes=document.selectNodes("/root/people");
for(Node node:nodes){
System.out.println(node.asXML());
}
}