• XML学习笔记


    一、XML简介

    XML是可扩展(可自定义标签)的标记性语言

    1、XML作用:

    1、用来保存数据,而且这些数据具有自我描述性

    2、还可以作为项目或者模块的配置文件

    3、还可以作为网络传输数据的格式,现在以json为主

    2、XML语法

    1、xml声明

    1. "1.0" encoding="utf-8" ?>
    2. <books>
    3. <book sn="SN123455">
    4. <name>时间简史name>
    5. <author>霍金author>
    6. <price>75.00price>
    7. book>
    8. <book sn="SN123456">
    9. <name>Java教程name>
    10. <author>小明author>
    11. <price>35.00price>
    12. book>
    13. books>

    2、xml语法介绍

    (1)标签命名可以包含字母、数字和其他字符

    (2)必须有根标签,且只能有一个

    (3)CDATA区 文本区域:里面的内容只是纯文本,不需要XML语法解析

       

    3、xml解析技术

    html和xml都可以用w3c组织制定的dom技术来解析

    早期jdk提供了两种xml解析技术dom和sax

    sax解析(simple API for XML),他跟w3c制定的解析不太一样,他是以类似事件机制通过回调告诉用户当前正在解析的内容,他是一行一行的读取xml文件进行解析,不会创建大量dom对象

    因此sax在解析xml时,在内存的使用上和性能上,都优于dom解析。

    jdom在dom基础上进行了封装

    dom4j又对jdom进行了封装

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

    dom4j是第三方解析稀释,需要使用第三方的类库才可以解析xml】

    4、dom4j解析技术

    module下新建目录,复制dom4j的jar包进来,加入到类路径下

     

    (1)Books.java

    1. import java.math.BigDecimal;
    2. public class Book {
    3. private String sn;
    4. private String name;
    5. private String author;
    6. private BigDecimal price;
    7. public Book() {
    8. }
    9. public Book(String sn, String name, String author, BigDecimal price) {
    10. this.sn = sn;
    11. this.name = name;
    12. this.author = author;
    13. this.price = price;
    14. }
    15. @Override
    16. public String toString() {
    17. return "Book{" +
    18. "sn='" + sn + '\'' +
    19. ", name='" + name + '\'' +
    20. ", author='" + author + '\'' +
    21. ", price=" + price +
    22. '}';
    23. }
    24. }

    (2)Dom4jTest.java

    [用Junit,Dom4j 把books.xml文档中的book标签转换为Books类对象]

    1. import org.dom4j.Document;
    2. import org.dom4j.DocumentException;
    3. import org.dom4j.Element;
    4. import org.dom4j.io.SAXReader;
    5. import org.junit.Test;
    6. import java.math.BigDecimal;
    7. import java.util.List;
    8. public class Dom4jTest {
    9. @Test
    10. public void test1() {
    11. //创建一个SaxReader输入流,去读取xml配置文件,生成document对象
    12. SAXReader saxReader = new SAXReader();
    13. Document document = null;
    14. try {
    15. document = saxReader.read("src/books.xml");
    16. } catch (DocumentException e) {
    17. e.printStackTrace();
    18. }
    19. System.out.println(document);
    20. }
    21. /*
    22. * 读取books.xml文件生成Book类*/
    23. @Test
    24. public void Test2() throws DocumentException {
    25. //1 读取book.xml文件
    26. SAXReader reader = new SAXReader();
    27. //2 通过document对象获取根元素
    28. //在junit测试中相对路径是从模块名开始算,即xml1
    29. Document document = reader.read("src/books.xml");
    30. Element rootElement = document.getRootElement();
    31. //3 通过根元素获取每一个book标签对象
    32. List books = rootElement.elements("book");
    33. //4 遍历,处理每个book标签转换为book类
    34. for(Element book: books){
    35. //System.out.println(book.asXML());
    36. //asXMl()方法把标签对象,转换为标签字符串
    37. Element nameElement = book.element("name");
    38. //System.out.println(nameElement.asXML());
    39. String nameText = nameElement.getText();
    40. //getText()获取标签中的文本内容
    41. //System.out.println(nameText);
    42. String priceText = book.elementText("price");
    43. String authorText = book.elementText("author");
    44. //直接获取指定标签名的文本内容
    45. //System.out.println(priceText);
    46. String sn = book.attributeValue("sn");
    47. //获取指定标签的属性值
    48. //System.out.println(sn);
    49. Book newbook = new Book(sn, nameText, authorText, new BigDecimal(priceText));
    50. System.out.println(newbook);
    51. }
    52. }
    53. }

    输出结果:

    Book{sn='SN123455', name='时间简史', author='霍金', price=75.00}
    Book{sn='SN123456', name='Java教程', author='小明', price=35.00}

  • 相关阅读:
    React函数组件渲染两次
    内聚:从低到高衡量一个模块内部各个元素彼此结合的紧密程度,分别是偶然、 时间、 过程 、通信、 顺序、 功能内聚
    上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花板
    Java学习笔记16——4种访问修饰符区别
    【Java核心知识】idea项目编译错误排查思路
    洛谷P1223 排队接水
    微软宣布延长Azure支持Apache Cassandra 3.11时间到2024年
    Python之wxPython的使用
    多态与抽象
    常见的垃圾回收算法有以下几种
  • 原文地址:https://blog.csdn.net/hhhxykeke/article/details/126691463