掌握XML的一些知识

1.什么是 什么是 xml?

xml 是可扩展的标记性语言。

2.xml 的作用?

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

3.xml 语法

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

3.1、文档声明

 1.创建xml文件:
在这里插入图片描述
 2.编辑文件名:
在这里插入图片描述
 3.代码示例
在这里插入图片描述

3.2 、xml 注释 注释

 html 和 XML 注释 一样 : <!-- html 注释 -->

3.3、元素(标签)

 1 )什么是 xml 元素:
在这里插入图片描述

2 )XML 命名规则:

XML 元素必须遵循以下命名规则:
2.1)名称可以含字母、数字以及其他的字符
2.2)名称不能以数字或者标点符号开始
2.3)名称不能包含空格

3 )xml 也 中的元素(标签)也 成 分成 单标签和双标签:

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

3.4 、xml 属性

xml 的标签属性和 html 的标签属性是非常类似的, 属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个属性。用 每个属性的值必须使用 引号 引起来。
的规则和标签的书写规则一致。
在这里插入图片描述

3.5、语法规则:

  1. 所有 XML 元素都须有关闭标签(也就是闭合标签)
  2. XML 标签对大小写敏感
  3. XML 必须正确地嵌套
  4. XML 文档必须有根元素
  5. XML 的属性值须加引号
  6. XML 中的特殊字符
    在这里插入图片描述
  7. 文本区域(CDATA 区)

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

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

在这里插入图片描述

2 、dom4j 解析技术 (重点*****)

由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j的 jar 包。

2.1、dom4j 编程步骤: 编程步骤:

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

2.2、获取 document 对象

创建一个 lib 目录,并添加 dom4j 的 jar 包。并添加到类路径。
在这里插入图片描述
需要解析的 books.xml 文件内容:
在这里插入图片描述
解析获取 Document 对象的代码:
第一步,先创建 SaxReader 对象。这个对象,用于读取 xml 文件,并创建 Document

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

2.3、遍历 、标签 获取所有标签中的内容( 获取所有标签中的内容(*****重点)

需要分四步操作:

  • 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
  • 第二步,通过 Document 对象。拿到 XML 的根元素对象
  • 第三步,通过根元素对象。获取所有的 book 标签对象
  • 第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText()
    方法拿到起始标签和结束标签之间的文本内容
/**
     * 读取books.xml文件生成Book类
     */
    @Test
    public void test2() throws Exception {
        //1 读取books.xml文件
        SAXReader reader=new SAXReader();
        //在Junit测试中,相对路径是从模块名开始算
        Document document = reader.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()吧标签对象转化为字符串
            Element nameElement = book.element("name");
            //getText()可以获取标签中的文本内容
            String nameText=nameElement.getText();
            System.out.println(nameText);
            //直接获取指定标签名的文本内容
            String priceText = book.elementText("price");
            String authorText=book.elementText("author");

            String snValue = book.attributeValue("sn");

            System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
        }


    }

结果:
在这里插入图片描述

posted @ 2020-06-05 10:03  秋弦  阅读(123)  评论(0编辑  收藏  举报