dom4j CDATA 解析

helixin1 2011-07-06 09:03:46
<?xml version="1.0" encoding="UTF-8"?>
<InterBOSS>
<OrigDomain>0001</OrigDomain>
<SvcCont>
<![CDATA[
<ECInfo>
<OprCode>01</OprCode>
<Note>bb</Note>
</ECInfo>
]]>
</SvcCont>
</InterBOSS>

怎么解析 CDATA中的 OprCode 和Note 。请高人指教
我用下面方法有异常
root.selectNodes("/InterBOSS/SvcCont/ECInfo/OprCode").get(0)
...全文
631 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dontsan 2011-08-03
  • 打赏
  • 举报
回复
找到那个节点,cast 成 CharacterData 然后操作。
xuwei5022 2011-07-25
  • 打赏
  • 举报
回复
你可以先取得CDATA中内容, 然后将取得内容解析为xml。然后正常解析xml就可以实现
微甜灬呼吸 2011-07-18
  • 打赏
  • 举报
回复
嗯 ..
wangjiangbo2 2011-07-15
  • 打赏
  • 举报
回复
获取cdata上层元素值就应该可以
小绵羊 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 filemon 的回复:]

晕, CDATA 中的所有内容都是个字符串,你把字符串解析到了之后就直接解析字符串。
[/Quote]
<![CDATA[这个标识是不会解析的
filemon 2011-07-08
  • 打赏
  • 举报
回复
给你个完整的代码吧。
好久不回贴了,最近想找工作,赚点分了再去发贴散分去。。。。
希望楼主快点结帖。


SAXReader reader = new SAXReader();
String s = null;
try {
Document document = reader.read("input.xml");//假设读取路径为"input.xml"

/*
* 解析CDATA部分的内容,并将它保存在字符串 s 中
*/
Element e = (Element) document.selectNodes("InterBOSS/SvcCont").get(0);

s = e.getStringValue();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(s!=null){
try {
Document document = DocumentHelper.parseText(s);//将前面解析出的字符串转换成xml
System.out.println(document.selectSingleNode("ECInfo/OprCode").getStringValue());//读出并打印中oprCode的值。
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
filemon 2011-07-08
  • 打赏
  • 举报
回复
晕, CDATA 中的所有内容都是个字符串,你把字符串解析到了之后就直接解析字符串。

小绵羊 2011-07-06
  • 打赏
  • 举报
回复
root.selectNodes("InterBOSS/SvcCont/ECInfo/OprCode");去掉最前面的斜杠

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧