1.前言

XML是可扩展标记语言,额,这个定义太官方了。在我看来,XML就是一种文本格式,符合这种文本格式的就是XML。只是个名字没有必要太过于纠结。
XML的作用是存储和传输数据,目前主流的是JSON,但是一些老项目还是用的XML,比如发票开票时的报文是XML,SAP提供的一些表结构接口的返回数据也是XML。
因此,系统学习一下XML还是有必要的。

2.特点

  • 大小写敏感:

    是不同两个标签

  • 属性值必须使用双引号:
  • 属性必须有属性值: 反例-

    3.结构

    image.png

    4.文档格式定义

    文档格式可以通过DTD方式或者XML Schema的方式去定义。DTD和XML Schema中描述的内容大致就是:xml主体中应该拥有哪些标签以及标签中可以有哪些标签。

  • DTD文档格式定义

    • 后缀为 .dtd
    • DTD的引用方式如3中结构所示的第2处定义
    • 语法规则(略,因为我也不太清楚)
  • XML Schema文档格式定义
    • 后缀为 .xsd
    • Schema文件的引用应该是XML文档的根元素 (例子可以看一下Spring的XML配置文件)

      5.命名空间

      在XML文档中可能会有如下的符号:xmlns,xmlns:xxx的类似符号。他们就是用来指明命名空间的。
      在菜鸟教程的XML教程中举了一个例子,就是两种标签,其中包含的子元素各不相同。这个时候就需要使用命名空间来区分他们。
      image.png
      这么一来,我们再同一个XML中引用就可以这样引用,空间A的table,空间B的table,空间C的table,这样就不会混淆了。
      命名空间A需要使用一个全局唯一的命名,于是就使用URL作为标识一个命名空间的方法 ```xml
      Apples Bananas

African Coffee Table80120

  1. 上面已经展示xmlns的用法。那么xmlns的用法又是啥呢?
  2. ```xml
  3. <configuration xmlns="http://www.google.com/spaceC" xmlns:spaceA="http://www.baidu.com/spaceA" xmlns:spaceB="http://www.sougou.com/spaceB">
  4. <spaceA:table>
  5. <spaceA:tr>
  6. <spaceA:td>Apples</spaceA:td>
  7. <spaceA:td>Bananas</spaceA:td>
  8. </spaceA:tr>
  9. </spaceA:table>
  10. <table>
  11. <name>African Coffee Table</name>
  12. <width>80</width>
  13. <length>120</length>
  14. </table>
  15. </configuration>

上面的是命名空间A的table,

是命名空间spaceC的table。如果再又则是命名空间B的table。

6.XSLT

xml文本看起来密密麻麻的都是字符,如果我们想更清晰的看懂其中的结构,可以通过XSLT这种语言,将XML转换成HTML。下面两图极为转换前后结果。
image.pngimage.png

7.总结

前面整理了一些XML的基础知识,了解即可。最重要的是能够通过代码去解析XML文本。之后我将陆续介绍几种解析XML的方式