浅谈XML配置实现逻辑

XML简介

什么是XML?

xml是可扩展的标记语言

浅谈XML配置实现逻辑_第1张图片

XML的作用

主要作用:

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

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

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

浅谈XML配置实现逻辑_第2张图片

 第一个实例

浅谈XML配置实现逻辑_第3张图片

 命名规则

浅谈XML配置实现逻辑_第4张图片

 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.文件结构

浅谈XML配置实现逻辑_第5张图片

 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 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.结果

浅谈XML配置实现逻辑_第6张图片

你可能感兴趣的:(Java,Web,前端,服务器,数据库)