JavaWeb技术之XML

一、XML简介

什么是XML?

xml是可扩展的标记性语言

XML的作用?

  1. 用来保存数据,而且这些数据具有自我描述性
  2. 它还可以作为模块的配置文件
  3. 它可以作为网络传输数据的格式(现在JSON)

1.语法

  1. 文档声明
  2. 元素(标签)
  3. xml属性
  4. xml注释
  5. 文本区域(CDATA区)

语法规则

  1. 所有XML元素都须有关闭标签(也就是闭合)

  2. XML对大小写敏感

  3. 标签必须正确的嵌套

  4. 文档必须有根元素

  5. XML文档必须有根元素

    根元素就是顶级元素,

    没有父标签的元素,叫顶级元素。

    根元素是没有父标签的顶级元素,而且是唯一一个才行。

  6. XML中的特殊字符

    小于号大于号需要和html中相同

a.文档声明

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

b.元素(标签)

什么是XML元素?

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

<bookstore>
<book category="CHILDREN">
  <title>Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title>Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore> 

在上例中, 和 都拥有元素内容,因为它们包含了其他元素。 只有文本内容,因为它仅包含文本。

在上例中,只有 元素拥有属性 (category=“CHILDREN”)。

XML命名规则

XML 元素必须遵循以下命名规则:

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能包含空格

可使用任何名称,没有保留的字词。

XML中的标签也分单标签和双标签

c. xml属性

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

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

d.xml注释

<!--这是xml的文档注释-->

e.文本区域(CDATA区)

CDATA语法区可以告诉xml解析器,我CDATA里的文本内容,只是纯文本,不需要xml语法解析

CDATA格式:

<![CDATA[这里可以把你输入的字符原样显示,不会解析xml]]>

2.XML技术解析

早期 JDK为我们提供了两种xml 解析技术DOM和Sax 简介(已经过时,但我们需要知道这两种技术)

第三方的解析:

jdom 在 dom 基础上进行了封装 、

dom4j 又对 jdom 进行了封装。

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

三、Dom4j解析技术(**)

1. dom4j编程步骤

  1. 先加载 xml 文件创建 Document 对象
  2. 通过 Document 对象拿到根元素对象
  3. 通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
  4. 找到你想要修改、删除的子元素,进行相应在的操作
  5. 保存到硬盘上

需要解析的books.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>
<books> 
    <book sn="SN12341232">
        <name>辟邪剑谱</name> 
        <price>9.9</price>
        <author>班主任</author> 
    </book> 
    <book sn="SN12341231">
        <name>葵花宝典</name> 
        <price>99.99</price> 
        <author>班长</author>
    </book> 
</books>

解析获取Document对象的代码

第一步,先创建SaxReader对象。这个对象,用于读取xml文件,并创建Document

public void getDocument() throws DocumentException { 
    // 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象
    SAXReader reader = new SAXReader();
    // 这个对象用于读取 xml 文件,然后返回一个 Document。
    Document document = reader.read("src/books.xml");
    // 打印到控制台,看看是否创建成功
    System.out.println(document);
}

2. 遍历 标签 获取所有标签中的内容

  1. 通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
  2. 通过 Document 对象。拿到 XML 的根元素对象
  3. 通过根元素对象。获取所有的 book 标签对象
  4. 遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容
public void readXML() throws DocumentException {
    // 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/books.xml");
    // 第二步,通过 Document 对象。拿到 XML 的根元素对象
    Element root = document.getRootElement();
    //第三步,通过根元素对象。获取所有的 book 标签对象
    List<Element> books = root.elements("book");
    // 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素
    for (Element book : books) {
        // 拿到 book 下面的 name 元素对象
        Element nameElement = book.element("name");
        // 拿到 book 下面的 price 元素对象
        Element priceElement = book.element("price");
        // 拿到 book 下面的 author 元素对象
        Element authorElement = book.element("author");
        // 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
        System.out.println("书名" + nameElement.getText() + " , 价格:" + priceElement.getText() + ", 作者:" + authorElement.getText());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值