• XML使用


    目录

    一、XML 简介 

    二、XML语法

    1、文档声明

    2、XML元素

    1)XML标签命名规则

    2)xml 属性

    3、语法规则

    三、xml 解析技术

    1、xml 解析技术介绍

    2、dom4j 解析技术

    1)dom4j 编程步骤:

    2)具体操作


    一、XML 简介 

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

    xml 的主要作用有:

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

    二、XML语法

    1、文档声明

    我们先创建一个简单  XML  文件,用来描述图书信息。

    1. xml声明。
    2. <books>
    3. <book id="SN123123413241">
    4. <name>java编程思想name>
    5. <author>华仔author>
    6. <price>9.9price>
    7. book>
    8. books>

    2、XML元素

    元素是指从开始标签到结束标签的内容。

    1)XML标签命名规则

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

    2)xml 属性

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

    在标签上可以书写属性:

    • 一个标签上可以书写多个属性。每个属性的值必须使用引号引起来,不引会报错。
    • 规则和标签的书写规则一致。

    3、语法规则

    • 所有 XML 元素都须有关闭标签(也就是闭合)
    • XML 标签对大小写敏感
    • XML 必须正确地嵌套
    • XML 文档必须有根元素,根元素就是没有父标签的元素,而且是唯一一个才行
    • XML 中的特殊字符,例如 >特殊字符:>,<特殊字符:<
    • 文本区域(CDATA 区),CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析

    CDATA   格式:

    三、xml 解析技术

    1、xml 解析技术介绍

    不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析。

     document 对象表示的是整个文档(可以是 html 文档,也可以是 xml 文档)

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

    dom  解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。Java 对 dom 技术解析标记也做了实现。

    sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple  API  for  XML )

    SAX 解析,它跟 W3C 制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容,它是一行一行的读取  xml  文件进行解析的,不会创建大量的  dom  对象。所以它在解析  xml 的时候,在内存的使用和性能上都优于  Dom  解析。 

    第三方的解析:

    • jdom 在 dom 基础上进行了封装    、 
    • dom4j 又对  jdom 进行了封装。
    • pull 主要用在  Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件

    2、dom4j 解析技术

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

    1)dom4j 编程步骤:

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

    2)具体操作

    1. <books>
    2. <book sn="SN12341232">
    3. <name>辟邪剑谱name>
    4. <price>9.9price>
    5. <author>班主任author>
    6. book>
    7. <book sn="SN12341231">
    8. <name>葵花宝典name>
    9. <price>99.99price>
    10. <author>班长author>
    11. book>
    12. books>

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

    1. @Test
    2. public void test2() throws DocumentException {
    3. //1.读取books.xml文件
    4. SAXReader reader = new SAXReader();
    5. //在Jubit测试中,相对路径是从模块名开始算
    6. Document document = reader.read("src/books.xml");
    7. //2.通过document对象获取根元素
    8. Element rootElement = document.getRootElement();
    9. //3.通过根元素获取book标签对象
    10. //Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
    11. List books = rootElement.elements("book");
    12. //4.遍历,处理每个标签转换为Book类
    13. for(Element book:books){
    14. //asXML():把标签对象转换为标签字符串
    15. Element nameElement = book.element("name");
    16. //asXML():把标签对象转换为标签字符串
    17. System.out.println(nameElement.asXML());
    18. //getText():文本内容
    19. System.out.println(nameElement.getText());
    20. //attributeValue:标签的属性值
    21. System.out.println(book.attributeValue("sn"));
    22. }
    23. }

    输出结果: 

    辟邪剑谱
    辟邪剑谱
    SN12341232
    葵花宝典
    葵花宝典
    SN12341231

  • 相关阅读:
    计算机组成原理——指令系统(课程笔记)
    pgbench 性能测试工具的使用
    基于VS2019编程实现的导弹惯性导航仿真导弹
    python 编写m3u8视频格式下载小工具
    少儿编程是智商税吗?不花钱让孩子赢在起跑线
    h5中左边有侧边栏,如何将右边bootstrap的div的布局设置为两列
    Docker常用命令
    神经网络-标准数据集介绍
    ExecutorService接口线程池
    如何借助CDC快速实现实时数据传输?
  • 原文地址:https://blog.csdn.net/qq_51409098/article/details/126189095