JavaWeb-XML

XML简介

XML 指可扩展标记语言

XML的作用

①XML 被设计用来传输和存储数据,存储的数据具有自我描述性

②XML可以作为项目或者模块的配置文件

③XML可以作为网络传输数据的格式(目前以JSON为主)

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    <?xml version="1.0" encoding="UTF-8" ?>
    是XML的声明,version表示XML的版本,encoding表示XML的文件本身的编码
 -->
<books>     <!-- 表示多个图书信息 -->
    <book id="12345678">        <!-- 表示一个图书信息,id属性表示图书序列号 -->
        <name>时间简史</name>       <!-- 表示图书名称 -->
        <price>12.6</price>     <!-- 表示图书价格 -->
        <author>霍金</author>     <!-- 表示图书作者 -->
    </book>
    <book id="23456789">
        <name>广义相对论</name>
        <price>13.6</price>
        <author>爱因斯坦</author>
    </book>
    <book id="34567891" name="量子力学" />
</books>

XML语法

①XML注释:<!-- xml注释 -->

②XML元素:是指从(且包括)开始标签到(且包括)结束标签的部分,元素可包含其他元素、文本或者两者的混合物,元素也可以拥有属性(元素是指从开始标签到结束标签的内容)

③XML命名规则:1)名称可以含字母、数字以及其它字符;2)名称不能以数字或者标点符号开始;3)名称不能包含空格

④XML中的元素(标签)也分成单标签和双标签

单标签格式:<标签名 属性="值" 属性="值"....../>

双标签格式:<标签名 属性="值" 属性="值"...>文本数据或子标签</标签名>

⑤XML属性:属性可以提供元素的额外信息,一个标签可以写多个属性。每个属性的值必须用引号引起来;

⑥XML语法规则:1)所有XML元素都必须有关闭标签;2)XML对大小写敏感;3)XML必须正确的被嵌套;4)XML文档必须有根元素(顶级元素,没有父标签的顶级元素,必须唯一);5)XML的属性值必须加引号;6)特殊字符必须使用与HTML相同形式书写(例如:<(&lt;),>(&gt;))7)CDATA格式:<![CDATA[这里输入的内容会原样显示,不会解析]]>

XML解析技术

XML DOM将XML文档作为一个树状结构,而树叶被定义为节点。

根元素

<books>

父↑    |    ↓子

属性:

"fname"

元素:

<book>

属性:

"id"

                        ↓

元素:

<name>

元素:

<author>

同级

元素:

<price>

文本:

时间简史

文本:

霍金

文本:

12.6

这种树结构被称为节点树。可通过这棵树访问所有节点。可以修改或删除它们的内容,也可以创建新的元素。这颗节点树展示了节点的集合,以及它们之间的联系。这棵树从根节点开始,然后在树的最低层级向文本节点长出枝条。

<?xml version="1.0" encoding="UTF-8" ?>
<books>
    <book id="sn12345678">
        <name>广义相对论</name>
        <author>爱因斯坦</author>
        <price>13.6</price>
    </book>
    <book id="sn23456789">
        <name>狭义相对论</name>
        <author>爱因斯坦</author>
        <price>12.6</price>
    </book>
    <book id="sn34567891">
        <name>时间简史</name>
        <author>霍金</author>
        <price>11.6</price>
    </book>
</books>
package com.atNewWorld.pero;

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

    public Book() {
    }

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

    public String getId() {
        return Id;
    }

    public void setId(String id) {
        Id = id;
    }

    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{" +
                "Id='" + Id + '\'' +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}
package com.atNewWorld.pero;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;

public class Dom4jTest {

    @Test
    public void test() {
        //创建一个SaxReader输入流读取XML配置文件生成Document对象
        SAXReader saxReader = new SAXReader();
        try {
            Document document = saxReader.read("src/books.xml");
            System.out.println(document);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //读取books.xml文件生成book类
    @Test
    public void test01() {
        //1.读取books.xml文件
        SAXReader saxReader = new SAXReader();
        try {
            //2.通过Document对象获取根元素
            Document document = saxReader.read("src/books.xml");
            Element rootElement = document.getRootElement();
            //3.通过根元素获取book标签对象
            //element()和elements()都是通过标签名查找子元素
            List<Element> books = rootElement.elements("book");
            //4.遍历,处理每一个book标签转换为book对象
            for (Element book : books) {
                Element nameElement = book.element("name");
                String nameText = nameElement.getText();
                String priceText = book.elementText("price");
                String authorText = book.elementText("author");
                String idText = book.attributeValue("id");
                System.out.println(new Book(idText,nameText,authorText,Double.parseDouble(priceText)));
            }
        } catch (DocumentException e) {
            throw new RuntimeException(e);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值