通过Xpath查询xml返回null,xmlns问题

来源:互联网 发布:火影忍者挂机软件 编辑:程序博客网 时间:2024/06/05 09:37

还是太年轻啊,遇到坑就记录一下,免得再掉坑里

下面是剧本

1、建立项目之后,在com.dom4j包下创建users.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?><root><user id="u01" username="jack" password="123456" /><user id="u02" username="marry" password="654321" /></root>

2、有了xml文件之后,那么我们去程序里读出来并且使用xpath进行xml的解析吧

在com.dom4j包下创建Dom4jXpath.java,内容如下:

package com.dom4j;import java.io.File;import java.util.Scanner;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Dom4jXpath {public static void main(String[] args) throws Exception {//解析XML文件,并查找指定的元素SAXReader saxReader = new SAXReader();Document document = saxReader.read(new File("src/com/dom4j/users.xml"));String xpath = "//user";Element element = (Element) document.selectSingleNode(xpath);System.out.println(element);}}


到这里剧本就该结束了,在console里面输入了如下内容

org.dom4j.tree.DefaultElement@4b187f5b [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@454e3bb0 [Attribute: name id value "u01"], org.dom4j.tree.DefaultAttribute@1330c35c [Attribute: name username value "jack"], org.dom4j.tree.DefaultAttribute@6669d6db [Attribute: name password value "123456"]]/>]


3、看完剧本,现在开始进入实际项目了,由于在内网上,xml最不用原始的了

进入正题

在项目中,xml类似于下面这种

<?xml version="1.0" encoding="UTF-8"?><root xmlns="www.baidu.com"><user id="u01" username="jack" password="123456" /><user id="u02" username="marry" password="654321" /></root>

菜鸟眼拙,刚开始完全没注意到根节点上这个xmlns(xml命名空间),使用相同的语句//user去获取信息,结果返回的是null,瞬间就炸了,这不就是没解析到吗?然后就跑去又看xpath语法,反复看了好几次。还是没能找到问题所在的地方。

后来一行行来试吧。发现是这个xmlns的问题。虽然不知道为什么,但是xmlns改为其他字符串,比如 snlmx就ok了。也是没有爱啊。



1 0