浅谈XML配置实现逻辑

本文介绍了XML的基本概念,包括其作为数据存储、配置文件和网络传输格式的作用。详细讲解了DOM和SAX解析技术的区别,以及如何使用Dom4j等第三方库解析XML实例。以Book类和DomTest类为例展示了XML文件的读取和转换过程。
摘要由CSDN通过智能技术生成

XML简介

什么是XML?

xml是可扩展的标记语言

XML的作用

主要作用:

1.用来保存数据,而且这些数据具有自我描述性

2.他可以作为项目或者模块的配置文件

3.还可以作为网络传输数据的格式(现在JSON为主)

 第一个实例

 命名规则

 xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息

在标签上可以书写属性:
个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来的规则和标签的书写规则一致。

XML发展历史

早期JDK为我们提供了两种xml 解折技术DOM 和Sax简介(已经过时,但我们需要知道这两种技术)
dom 解析技术是 W3C组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。
Java对 dom 技术解析标记也做了实现。

sun公司在JDK5版本对 dom 解析技术进行升级:SAX( Simple API for XL)SAX解析,它跟 W3C制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容它是一行一行的读取xml文件进行解析的。不会创建大量的 dom 对象。所以它在解析xml的时候,在内存的使用上。和性能上。都优于 Dom 解析。

第三方的解析:
idom 在 dom 基础上进行了封装
dom4j又对 jdom 进行了封装(很多框架都是用dom4j进行解析xml)
pull 主要用在 Android 手机开发,是在跟 sax非常类似都是事件机制解析 xml文件。

这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。

XML实例

1.文件结构

 2.依赖jar包

依赖资源

3.测试

Book.java

public class Book {
    private String sn;
    private String name;
    private Double price;
    private String author;

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

    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 Double getPrice() {
        return price;
    }

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

    public String getAuthor() {
        return author;
    }

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

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

DomTest.java

public class DomTest {

    @Test
    public void test1() throws DocumentException {
//        创建一个saxReader输入流,去读取xml配置文件,生成Document对象
        SAXReader saxReader=new SAXReader();
        Document document = saxReader.read("src/books.xml");
        System.out.println("document = " + document);
    }

    /**
     * 读取books.xml文件生成Book类
     */
    @Test
    public void test2(){
//        1.读取books.xml
        SAXReader saxReader = new SAXReader();
//        2.通过Document对象获取根元素
        Document document=null;
        try {
            document = saxReader.read("src/books.xml");
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        Element rootElement = document.getRootElement();
        System.out.println("rootElement = " + rootElement);
//        3.通过根元素获取book标签对象
//        element()和elements()都是通过标签名进行查找子元素
        List<Element> books = rootElement.elements("book");
//        System.out.println("books = " + books);
//        4.遍历,处理每个book标签转换换成Book类
        for (Element book :
                books) {

            Element nameElement = book.element("name");
//            asXML()把标签对象转换成标签字符串
//            System.out.println(nameElement.asXML());
            String text = nameElement.getText();
//            System.out.println("text = " + text);
//            获取指定标签李米娜的文本内容
            String name = book.elementText("name");
            System.out.println("name = " + name);

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

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

        }


    }
}

4.结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值