Java – Dom4J解析XML

Java – Dom4J解析XML1.XML解析的方式DOM:要求解析器将整个XML文件全部加载到内存中,生成一个Document对象1.优点:元素和元素之间保留结构,关系,可以针对元素进行CURD操作。2.缺点:如果XML文件过大,可能会导致内存溢出。SAX:是一种速度更快,更加高效的解析方式。它是逐行扫描,边扫描边解析,并且以事件驱动的方式来进行具体的解析,每解析已行都会触发一个事件1.优点:不会出现内存…

大家好,欢迎来到IT知识分享网。

1.XML解析的方式

        DOM: 要求解析器将整个XML文件全部加载到内存中,生成一个Document对象

            1.优点:元素和元素之间保留结构,关系,可以针对元素进行CURD操作。

             2.缺点:如果XML文件过大,可能会导致内存溢出。

        SAX:是一种速度更快,更加高效的解析方式。它是逐行扫描,边扫描边解析,并且以事件驱动的方式来进行具体的解析,每解析已行都会触发一个事件

               1.优点:不会出现内存溢出的问题,可以处理大文件

                2.缺点:只能读,不能写

解析器就是根据不同的解析方式提供具体的实现,为了方便开发人员来解析XML,有一些方便操作的类库。

dom4j : 比较简单的XML解析的类库

Jsoup :功能强大的DOM方式解析的类库,尤其 对HTML的解析更加方便

2.使用dom4j解析XML 

Java - Dom4J解析XML

<users>
    <user id="1001" country="Country">
        <id>111</id>
        <name>111</name>
        <password>111</password>
    </user>
    <user id="1002" country="Country">
        <id>1112</id>
        <name>1112</name>
        <password>1112</password>
    </user>
</users>

使用dom4j解析xml

//创建解析器对象
SAXReader saxReader = new SAXReader();

//使用解析器对象读取XML文档生成Document对象
try{

    Document document = saxReader.read(Dom4jTest.class.getClassLoader().getResource("***.xml"));

//根据Document对象获取XML的元素(标签)信息
Element rootElement = document.getRootElement();

//获取根节点的名字
rootElement.getName();

//获取根节点users标签的子标签列表
List<Element> elements = rootElement.elements();

for(Element element:elements){
    System.out.println("users标签的子标签的名字是:"+element.getName());
    System.out.println("users标签的子标签的id属性值是:"+element.attributeValue("id"));
    
    //获取子标签的所有子标签
    List<Element> elementNodeList = element.elements();
    for(Element node:elementNodeList){
        System.out.println("user标签下的子标签名字是:"+node.getName());
        System.out.printkn("user标签下的子标文本是:"+node.getText());
    }
}

//获取user标签的第一个user标签
Element firstUserElement = rootElement.element("user");
//第一个user标签的的子标签password的文本
String password = firstUserElement.elementText("password");


}catch(DocumentException e){
    e.printStackTrace();
}

Dom4j重要的API说明

org.dom4j.Document 常用方法

Element getRootElement(); //获取根节点

String attributeValue(String name); //获取指定属性名称的属性值

String elementText(String name); //获取指定名称的子标签的文本,返回子标签文本的值

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/14629.html

(0)
上一篇 2024-02-25 21:15
下一篇 2024-02-25 22:26

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信