使用dom4j解析xml文档

Posted tkg1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用dom4j解析xml文档相关的知识,希望对你有一定的参考价值。

先要导入包,

技术图片

 

 导入以后,新建一个xml文档,写入以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app version="1.0">
    <servlet>
        <servlet-name>1</servlet-name>
        <servlet-class>xxx</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>1</servlet-name>
        <url-pattern>22</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file></welcome-file>
    </welcome-file-list>
</web-app>

然后写类:

package dom4j;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class TestDom4j {
    @Test
    public void Testdom4j() {
        try {
            //1.获取解析器
            SAXReader sr =new SAXReader();
            //2.获取document文档对象
            Document doc= sr.read("src/dom4j/web.xml");
            //3.获取根元素
            Element rootElement = doc.getRootElement();
//            System.out.println("根元素"+rootElement.getName());//获取根元素的名称
//            System.out.println(rootElement.attributeValue("version"));//获取根元素中verion的属性值
            //4.获取根元素的下一个子元素
            List<Element> children = rootElement.elements();
            //5.遍历子元素
            for (Element element : children) {
                if("servlet".equals(element.getName())){//如果元素的名字等于servlet
                    Element servletName = element.element("servlet-name");
                    Element servletClass = element.element("servlet-class");
                    System.out.println(servletName.getText());//输出servletName的文本内容
                    System.out.println(servletClass.getText());//输出servletClass的文本内容
                    
                }
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

使用Junit测试之后:

技术图片

 

 这样就可以获取,根元素,以及子元素,各种属性值等,更多方法如下:

elements()获取指定名称的所有子元素

element()获取指定名称的首个子元素

elementText()获取指定名称元素的文本值

 

 

思考:在写的过程中,要用list来接受,并且遍历根元素的所有子元素,为了加快效率,可以使用泛型,这样在后来的遍历中,直接什么也不用输入,只需要输入循环体里面的内容,减少了很多麻烦

以上是关于使用dom4j解析xml文档的主要内容,如果未能解决你的问题,请参考以下文章

我用dom4j创建了一个xml文档,没有错误,但运行没有结果,哪位高手指点一下

Java案例:利用dom4j解析XML文件

javaweb学习总结十三(dom4j方式对XML文档进行解析)

javaweb dom4j解析xml文档

学习笔记关于DOM4J:使用DOM4J解析XML文档

浅谈用java解析xml文档