dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
2009-04-14 23:05
531 查看
XML文件如下:
解析代码如下:
运行结果如下:
<?xml version="1.0" encoding="gbk" standalone="yes"?> <unit xmlns="http://www.sdml.info/srcML/src" xmlns:cpp="http://www.sdml.info/srcML/cpp"> <cpp:ifndef> <name>test</name> </cpp:ifndef> <class>class</class> </unit>
解析代码如下:
public static void main(String [] args){ Document document = XmlTools.getDoc(file.getPath()); HashMap xmlMap = new HashMap(); xmlMap.put("src", "http://www.sdml.info/srcML/src"); xmlMap.put("cpp", "http://www.sdml.info/srcML/cpp"); // 以下可以访问到 XPath x0 = document.createXPath("unit/src:class"); XPath x1 = document.createXPath("src:unit/src:class"); XPath x2 = document.createXPath("/unit/src:class"); XPath x3 = document.createXPath("unit/src:class"); XPath x4 = document.createXPath("/unit/cpp:define"); XPath x6 = document.createXPath("unit/cpp:define"); XPath x7 = document.createXPath("src:unit/cpp:define"); // 以下访问不到 XPath x8 = document.createXPath("unit/class"); XPath x9 = document.createXPath("unit/define"); XPath x10 = document.createXPath("/unit/class"); XPath x11 = document.createXPath("/unit/define"); XPath x12 = document.createXPath("src:unit/class"); XPath x13 = document.createXPath("src:unit/define"); XPath x14 = document.createXPath("unit/cpp:class"); XPath x15 = document.createXPath("unit/src:define"); test(x0, document, xmlMap); test(x1, document, xmlMap); test(x2, document, xmlMap); test(x3, document, xmlMap); test(x4, document, xmlMap); test(x6, document, xmlMap); test(x7, document, xmlMap); test(x8, document, xmlMap); test(x9, document, xmlMap); test(x10, document, xmlMap); test(x11, document, xmlMap); test(x12, document, xmlMap); test(x13, document, xmlMap); test(x14, document, xmlMap); test(x15, document, xmlMap); } static void test(XPath x, Document doc, Map map) { x.setNamespaceURIs(map); System.out.println("运行结果:"+x.selectNodes(doc).size()); }
运行结果如下:
运行结果:1 运行结果:1 运行结果:1 运行结果:1 运行结果:1 运行结果:1 运行结果:1 运行结果:0 运行结果:0 运行结果:0 运行结果:0 运行结果:0 运行结果:0 运行结果:0 运行结果:0
相关文章推荐
- dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
- 转: dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
- xpath解析含有命名空间别名的xml文件的示例代码
- 使用jdom操作xml文件 去除子节点带有命名空间
- 解决办法:Flex4使用Efflex_v0.03.swc (Fx4/FP10),在该命名空间中多次定义了组件 MotionPath……
- 解决dom4j无法解析xml命名空间的问题
- dom4j使用XPath解析XML返回null的解决方法
- Xpath dom4j解析带有命名空间的XML的方法
- dom4j结合xpath获取多命名空间xml中指定id、指定属性节点
- dom4j 使用xpath 解析 persistence.xml 出现xmlns后不能解析问题解决
- dom4j中通过xpath处理带命名空间的XML文件
- 用dom4j解析带命名空间的xml文件
- dom4j 使用原生xpath 处理带命名空间的文档
- 用Dom4J解析带命名空间的XML文件
- java 在dom4j中,使用XPath处理XML(主要对命名空间的处理)
- XPath遇上命名空间(注意,就算是用默认命名空间的节点,也要为命名空间定义一个名字,并使用这个名字)
- dom4j处理带命名空间的XML-使用XPath
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
- 断开网络dom4j无法解析有网络dtd的xml文件的解决办法
- 解析xml取不到节点的的解决办法