在XML处理工具包中,dom4j其实很好使用, 功能也比较齐全. 不过由于资料并不是很多. 一些细节的处理可能会遇到各种坑.
这里介绍一下使用dom4j里的xpath去获取节点时, 出现的问题.
其官方网站: https://dom4j.github.io/ 发现这个jar包的1.x版本都是10几年前发布的了.前面更新了2.x版本,支持java8.
Maven引入.
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
问题描述: 在代码中加载一个xml文件, 代码如下
<School xmlns="www.china.com"> <Students> <Student> <Id>12306</Id> <name>ming</name> <scope>59</scope> </Student> </Students> </School>
在代码里获取节点Id=12306的节点
public void getStudentElement(Element schoolElement) { Element studentElement = (Element)schoolElement.selectSingleNode(schoolElement, "Studies/Student[Id='12306']"); System.out.print(studentElement.getName()); }
发现一直抛出错误信息. 明明是同样的方法, 为什么在别的地方可以使用,这里却抛出问题呢? 开始以为是自己的xpath不规范, 又直接搜索官方的文档看了一遍.
没发现什么问题.
问题出现在xml name space上由于使用xpath, 会对name space进行解释, 自己定义的name space是无法通过三方插件去解释了.去掉就可以了.