歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Dom4j 存在命名空間導致document.selectNodes() 無返回結果

Dom4j 存在命名空間導致document.selectNodes() 無返回結果

日期:2017/3/1 9:45:10   编辑:Linux編程

xml文件中存在命名空間導致 document.selectNodes("//linuxidc/book") 無返回結果
如:
<linuxidc xmlns="http://www.linuxidc.com">
<book>
<title></title>
<des></des>
...
</book>
</linuxidc>

推薦閱讀:

dom4j+xpath讀取xml文件配置Oracle數據庫連接 http://www.linuxidc.com/Linux/2013-04/83405.htm

Struts2+jQuery+Dom4j實現服務器返回Xml文檔 http://www.linuxidc.com/Linux/2012-07/65680.htm

Java使用dom4j解析XML字符串 http://www.linuxidc.com/Linux/2013-07/87734.htm

解決方法

// 獲得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:linuxidc/xmlns:book");
x.setNamespaceURIs(map);
// 這樣就拿到結果了
List<Node> nodes = x.selectNodes(doc);
Node node = x.selectSingleNode(doc);

Copyright © Linux教程網 All Rights Reserved