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

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());
}

}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值