在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是无法通过三方插件去解释了.去掉就可以了.

 

posted on 2019-09-24 20:38  秋风下的落叶  阅读(344)  评论(0编辑  收藏  举报