Java Web(3)-XML

时间:2020-07-26 02:08:50   收藏:0   阅读:105

一、XML简介

1. 什么是xml?

xml 是可扩展的标记性语言

2. xml的作用?

二、XML语法

首先创建一个xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    文件的声明
    version="1.0"        表示xml的版本
    encoding="UTF-8"     表示xml文件本身的编码
-->

图书有 标识,书名,有作者,价格的信息

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    文件的声明
    version="1.0"        表示xml的版本
    encoding="UTF-8"     表示xml文件本身的编码
-->

<!-- 多个图书信息-->
<books>

    <!--一个图书的基本信息-->
    <book sn="SN123454321">    <!--属性值-->
        <name>雍正王朝</name>
        <author>二月河</author>
        <price>99</price>
    </book>

    <book sn="SN987654321">
        <name>康熙大帝</name>
        <author>二月河</author>
        <price>99</price>
    </book>
</books>

注意:

三、XML解析

这里主要就使用dom4j技术来解析

首先需要到官网找到这个jar包,直接复制到当前的模块下即可

1. Dom4j编程步骤

2. 获取document对象

1. 首先创建一个lib包,直接把网上找到的dom4j的jar包复制到lib下,然后

技术图片

2. 写一个需要解析的books.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<books>
    <book sn="SN123454321">
        <name>雍正王朝</name>
        <author>二月河</author>
        <price>99</price>
    </book>

    <book sn="SN987654321">
        <name>康熙大帝</name>
        <author>二月河</author>
        <price>99</price>
    </book>
</books>

3. 获取Document对象的代码

@Test
    public void test1() throws DocumentException {

        // 1. 先创建一个SAXReader对象
        SAXReader saxReader = new SAXReader();
		// 2. 这个对象用来读取xml文件,返回一个document
        Document read = saxReader.read("src/books.xml");
		// 3. 打印到控制台,查看是否成功
        System.out.println(read);

    }

3. 遍历标签获取内容

需要分四步操作:

首先写一个Book类,用于存放数据

package com.md.java;
/**
 * @author MD
 * @create 2020-07-24 8:45
 */
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文件就是上面的books.xml

    /**
     * 读取books.xml文件生成的Book类
     */
    @Test
    public void test2() throws DocumentException {
        // 1. 读取文件,在Junit测试中,相对路径是从模块名开始的
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/books.xml");

        // 2. 通过Document对象获取根元素
        Element rootElement = document.getRootElement();
        //System.out.println(rootElement);

        // 3. 通过根元素读取book标签对象
        // element()和elements()都是通过标签名查找子元素
        List<Element> books = rootElement.elements("book");

        // 4. 遍历处理book标签转换为Book类
        for (Element book:books){
            // asXML()把标签对象转换为标签字符串
            // System.out.println(book.asXML());

            // 5. 获取到了这个标签
            Element nameElement = book.element("name");
            // 获取这个标签的文本内容
            String name = nameElement.getText();

            // 或者可以直接获取标签里的文本内容
            String price = book.elementText("price");
            String author = book.elementText("author");

            // 获取属性值
            String sn = book.attributeValue("sn");


            // 获取完成之后就可以生成了,注意价格是double类型的
            System.out.println(new Book(sn,name,author,Double.parseDouble(price)));

        }

    }
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!