通过Xpath查询xml返回null,xmlns问题 骑猪看日落 2022-07-24 04:20 124阅读 0赞 还是太年轻啊,遇到坑就记录一下,免得再掉坑里 下面是剧本 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了。也是没有爱啊。
还没有评论,来说两句吧...