微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml解析技术介绍、使用dom4j读取xml文件内容

xml解析技术介绍

 document对象表示的是整个文档(可以是html文档,也可以是xml文档)

        dom解析技术是w3c组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现,java对dom技术解析标记也做了实现。sun公司在jdk5版本对dom解析技术进行升级:SAX

        SAX解析,它跟w3c制定的解析不太一样,它是类似事件机制通过回调告诉用户当前正在解析的内容,它是一行一行的读取xml文件进行解析的,不会创建大量的dom对象,所以它在解析dom时,在内存的使用上和性能上都优于Dom解析

        第三方的解析:

                1.jdom是在dom基础上进行封装的

                2.dom4j是对jdom进行封装的

                3.pull主要是用在andriod手机开发,是在跟sax非常类似都是事件机制解析xml文件

使用dom4j读取xml文件内容

由于dom4j并非sun公司,属于第三方公司,在使用时需要到dom4j官网下载jar包

dom4j编程步骤:

1.先加载xml文件创建Document对象

2.通过Document对象拿到根元素对象

3.通过根元素.elements(标签名),可以返回一个集合,该集合放了你所指定的标签名的元素对象

4.找到你需要修改删除的子元素,进行相应的操作

5.保存

将dom4j的jar包加入到idea中

 右击选择添加

 创建一个Book类将后面的数据进行管理:

package dom4j;

import java.math.BigDecimal;

public class Book {

    private String sn;
    private String name;
    private String author;
    private Double price ;

    public Book() {
    }

    public Book(String sn, String name, String author, Double price) {
        this.sn = sn;
        this.name = name;
        this.author = author;
        this.price = price;
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    @Override
    public String   toString() {
        return "Book{" +
                "sn='" + sn + '\'' +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

创建一个xml文件

<?xml version="1.0" encoding="utf-8" ?>
<!--
    xml的声明:<?xml version="1.0" encoding="utf-8" ?>
    version 表示xml的版本
    encoding 表示xml文件本身的编码
-->
<books ><!--books表示多个图书-->
    <book sn="SN112233"> <!--book表示一个图书,sn表示图书序列号-->
        <name>三国演义</name><!--name,anthor,price 表示标签-->
        <author>罗贯中</author>
        <price>28.9</price>
    </book>

    <book sn="SN1122334455">
        <name>西游记</name>
        <author>吴承恩</author>
        <price>26.9</price>
    </book>

</books>

创建一个测试类BookTest进行测试

package dom4j;

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

import java.util.List;

public class BookTest {
    @Test
    public void test01() {
        //1.创建一个SAXReader输入流,去读取xml配置文件生成document对象
        SAXReader saxReader = new SAXReader();

        Document document = null;
        try {
            //2.读取books.xml文件
            document = saxReader.read("xml/books.xml");
            //3.通过document对象获取根元素
            Element rootElement = document.getRootElement();
            //4.通过根元素获取book标签对象
            //element()和elements()都是通过标签名查找子元素
            List<Element> books = rootElement.elements("book");
            //5.遍历处理每个book标签转换为book类
            for (Element book : books){
                //asXML():把标签对象转换为标签字符串
                //System.out.println(book.asXML());
                //elementText():获取指定标签名的文本内容

                String name = book.elementText("name");
                String author = book.elementText("author");
                String price = book.elementText("price");
                String sn = book.elementText("sn");

                Book book1 = new Book(sn, name, author, Double.parseDouble(price));
                System.out.println(book1);

            }

        } catch (DocumentException e) {
            throw new RuntimeException(e);
        }



    }
}

原文地址:https://www.jb51.cc/wenti/3287051.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐