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

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

推薦閱讀:linux

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

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服務器

解決方法dom

  // 得到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);spa

相關文章
相關標籤/搜索