• xml 解析技术介绍和解析xml文件


     xml 解析技术介绍

    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 文件。

     这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。

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

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

    Dom4j 类库的使用  

    如何查 Dom4j 的文档 

    Dom4j 快速入门 

    lib 目录

     

    src 目录是第三方类库的源码目录:

     

    dom4j 编程步骤:

    第一步: 先加载 xml 文件创建 Document 对象

    第二步:通过 Document 对象拿到根元素对象

    第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象

    第四步:找到你想要修改、删除的子元素,进行相应在的操作 第五步,保存到硬盘上

    获取 document 对象  

    创建一个 lib 目录,并添加 dom4j 的 jar 包。并添加到类路径

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

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

    解析获取 Document 对象的代码

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

    1. /*
    2. * dom4j 获取 Documet 对象
    3. */
    4. @Test
    5. public void getDocument() throws DocumentException {
    6. // 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象
    7. SAXReader reader = new SAXReader();
    8. // 这个对象用于读取 xml 文件,然后返回一个 Document。
    9. Document document = reader.read("src/books.xml");
    10. // 打印到控制台,看看是否创建成功
    11. System.out.println(document);
    12. }

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

    需要分四步操作:

    第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象

    第二步,通过 Document 对象。拿到 XML 的根元素对象

    第三步,通过根元素对象。获取所有的 book 标签对象

    第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容

    1. /*
    2. * 读取 xml 文件中的内容
    3. */
    4. @Test
    5. public void readXML() throws DocumentException {
    6. // 需要分四步操作:
    7. // 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
    8. // 第二步,通过 Document 对象。拿到 XML 的根元素对象
    9. // 第三步,通过根元素对象。获取所有的 book 标签对象
    10. // 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
    11. // 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
    12. SAXReader reader = new SAXReader();
    13. Document document = reader.read("src/books.xml");
    14. // 第二步,通过 Document 对象。拿到 XML 的根元素对象
    15. Element root = document.getRootElement();
    16. // 打印测试
    17. // Element.asXML() 它将当前元素转换成为 String 对象
    18. // System.out.println( root.asXML() );
    19. // 第三步,通过根元素对象。获取所有的 book 标签对象
    20. // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
    21. List books = root.elements("book");
    22. // 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,
    23. for (Element book : books) {
    24. // 测试
    25. // System.out.println(book.asXML());
    26. // 拿到 book 下面的 name 元素对象
    27. Element nameElement = book.element("name");
    28. // 拿到 book 下面的 price 元素对象
    29. Element priceElement = book.element("price");
    30. // 拿到 book 下面的 author 元素对象
    31. Element authorElement = book.element("author");
    32. // 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
    33. System.out.println("书名" + nameElement.getText() + " , 价格:"
    34. + priceElement.getText() + ", 作者:" + authorElement.getText());
    35. }
    36. }

     

     

  • 相关阅读:
    苹果cms模板MXone V10.6魔改版短视大气海报样式
    ZEMAX | 如何使用渐晕系数
    _Linux 静态库
    pytorch中正向传播和反向传播的钩子Hook
    【UNIX网络编程】|【06】基本UDP套接字编程【数据报丢失、性能、流量控制....】
    软件测试和软件开发之间的关系及模型
    1个月写900多条用例,二线城市年薪33W+的测试经理能有多卷?
    05.jvm常量池02
    PHP redis set 集合
    【Android笔记02】Android目录结构及相关文件介绍
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/127437637