dom4j获取某个已知节点的值+循环名字相同的节点

来源:互联网 发布:百度贴吧登陆不上网络 编辑:程序博客网 时间:2024/06/13 05:53

dom4j获取某个已知节点的值:

可能犯的错误:

(1)没有引入jar包

需要两个jar包

jaxen-1.1-beta-6.jar
dom4j-1.6.1.jar

(2)没有区分大小写,如下面  (**************************需要区分大小写)

要处理的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());
}

}


0 0