当前位置: 代码迷 >> 综合 >> paip dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结
  详细解决方案

paip dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结

热度:89   发布时间:2024-01-13 07:34:55.0

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

paip.dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结


----作者Attilax , 1466519819@qq.com---

可能是因为XML文件带有命名空间.比如
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 

因为dom4j不能识别带命名空间的节点,所以在读取带命名空间的XML时,要在每个节点前加上命名空间,方法如下例子:


  Document doct=reader.read(xmlFile);
                                        HashMap nsMap=new HashMap();
                                        nsMap.put("ns","http://java.sun.com/xml/ns/jbi");          //加入命名空间
                                        //获取子节点
                                        XPath xsub=doct.createXPath("//ns:title");
                                        xsub.setNamespaceURIs(nsMap);
                                        Element element = (Element) xsub.selectSingleNode(doct);

 


参考
dom4j含xmlns(命名空间)调用selectNodes为空问题 - mochouxiyan的专栏 - 博客频道 - CSDN_NET.htm
上面就是运用dom4j解析带命名空间的xml文件的节点的例子,只要给XPath设置默认的命名空间就行了

 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  相关解决方案