您的位置:首页 > Web前端 > Node.js

dom4j 存在命名空间导致document.selectNodes() 无返回结果

2014-03-25 22:33 429 查看
xml文件中存在命名空间导致 document.selectNodes("//books/book") 无返回结果

如:

<books xmlns="http://www.books.com">
<book>
<title></title>
<des></des>
...
</book>

</books>

解决方法:
// 获得xml对象
Document doc = DocumentHelper.parseText(xml);
Map map = new HashMap();
// 获得命名空间
String nsURI = doc.getRootElement().getNamespaceURI();
map.put("xmlns", nsURI);
// 创建解析路径,就是在普通的解析路径前加上map里的key值
XPath x = doc.createXPath("//xmlns:books/xmlns:book");
x.setNamespaceURIs(map);
// 这样就拿到结果了
List<Node> nodes = x.selectNodes(doc);
Node node = x.selectSingleNode(doc);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dom4j 命名空间