XML

短命女 2023-06-14 10:50 17阅读 0赞

最近在使用Web Service服务,需要使用XML进行数据交换,涉及到XML的解析问题,遂做以记录。
文章引用了菜鸟教程、W3CSchool、百度百科、WIKI百科,综合个人的理解,对以上内容进行了整理,精简。添加了个人的想法等。

目录

  • XML基础←戳我跳转

    • XML概述
    • XML用途
    • XML树结构
    • XML语法
    • XML元素
    • XML属性
    • 验证
    • XSLT
  • XML JavaScript←戳我跳转

    • XML HttpRequest对象
    • XML 解析器
    • DOM
    • XML to Html
    • XML 应用程序
  • XML 高级←戳我跳转

    • XML 命名空间(Namespace)
    • CDATA
    • XML编码
    • XML 服务器
    • XML DOM高级
    • XML 注意事项
    • XML 数据存储
    • XML 技术
    • 案例
    • DTD和Schema

XML基础←戳我返回目录

一、XML概述
  • XML 指可扩展标记语言(Extensible Markup Language)
  • XML被设计用来传输和存储数据,而不是像Html那样显示数据
  • XML不同于HTML的预定义标签,需要用户自行定义标签
  • XML是W3C的推荐标准,被设计为具有自我描述性
二、XML用途
  • 将数据与展示数据的模板如(HTML、JSP……)等分离
  • 简化数据的共享方式。XML使用纯文本存储数据,使用了独立与软硬件的存储方法,创建一份XML即可供不同的应用程序共享。
  • 简化数据传输。XML可方便地在异构系统之间传输
    ……
  • 创建新的互联网语言。如:WSDL(Web Service Description Language),Web 服务描述语言。
三、XML树结构

举例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3. <child>First</child>
  4. <name>Jack</name>
  5. <age>12</age>
  6. <sex>boy</sex>
  7. <child2>Second</child2>
  8. <name>Juliet</name>
  9. <age>12</age>
  10. <sex>girl</sex>
  11. </root>

上文中,第一行<?xml …… ?>是XML的版本定义和编码格式。

<root>是根节点,其包含两个元素<child><child2>,这两个元素又分别包含 了<name><age><sex>三个子元素

四、语法
  • XML的可选声明,如果存在请添加至文档的首行
  • XML文档必须有根元素
  • 所有元素必须有关闭标签
  • 元素标签对大小写敏感
  • 元素标签需要被正确地嵌套
  • 属性值需要使用双引号
    如:<node data="2019年某月某日"></node>
  • 注释
    <!-- 注释内容-->
  • XML中的空格会被保留,且多个空格会被合并,保存为1个
  • XML以LF存储换行。
    在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。
  • 实体引用
    XML中的部分字符在XML有特殊的含义,如:<,会被解析器当作一个元素的开始。为避免这种类型的错误,请使用实体引用代替。

    XML中预定义的5个实体引用:




































    lt; < 小于
    gt; > 大于
    amp; & 与关系、和符号
    apos; 单引号
    quot; 双引号

    Tips: 在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。

五、元素

XML元素是指从开始元素到结束标签之间的内容,包含起始、结束标签本身,元素可嵌套其他子元素,且元素可以拥有属性,元素是可扩展的,可以自由添加同级、子级元素等。

元素命名规则:

  • 无保留字
  • 名称可以含字母、数字以及其他的字符
  • 不能以数字或者标点符号开始
  • 不能以字符 “xml”(或者 XML、Xml)开始
  • 不能包含空格
  • 不推荐使用_-.等符号,建议使用小驼峰、大驼峰规则使用英文单词命名
六、属性

XML中的元素可以在开始标签中添加属性(Attribute),为XML元素提供额外的信息。
如:
<root id="xxxx" type="xxx">some text</root>

  • 属性值必须加引号(单、双引号)
    Tips:如果属性值本身包含双引号,可以在外层使用单引号
    <root id="xxx" type='aaa"bb"ccc'></root>
    或者使用上文提到的实体引用
    <root id="xxx" type="aaa"bb"cc"></root>

使用属性还是元素存储数据?
看下面的例子:

  1. <person sex="female">
  2. <firstname>Anna</firstname>
  3. <lastname>Smith</lastname>
  4. </person>
  5. <person>
  6. <sex>female</sex>
  7. <firstname>Anna</firstname>
  8. <lastname>Smith</lastname>
  9. </person>

上文中,前者使用sex属性存储信息,后者使用子元素存储信息。两种方式都可以正常解析,但是基于一种行业规范,如果要存储的文本看起来就是数据,请尽量使用元素存储。

属性可能会引起一些问题:

  • 属性无法包含多重的值(元素可以)
  • 属性无法描述树结构(元素可以)
  • 属性不易扩展(为未来的变化)
  • 属性难以阅读和维护

元数据应尽量使用属性存储:

一些元素常常使用一个ID进行标识,往往可以使用UUID,用来标识、索引XML文件中的元素

  1. <root>
  2. <element id="001">
  3. <name>xxx</name>
  4. <age>xxx</age>
  5. </element>
  6. <element id="002">
  7. <name>xx</name>
  8. <age>xx</age>
  9. </element>
  10. </root>

上面的 ID 仅仅是一个标识符,用于标识不同的元素标签,并不是标签数据的组成部分。

因此:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

七、XML验证

拥有正确语法的 XML 被称为“形式良好”的 XML,语法请参照第四节。

通过 DTD 验证的 XML 是“合法”的 XML。

八、XSLT

XSLT(Extensible Stylesheet Language Transformations)可扩展样式表转化语言,XSLT 是首选的 XML 样式表语言,比CSS更加完善。


XML JavaScript←戳我返回目录


XML高级←戳我返回目录

更新中……

发表评论

表情:
评论列表 (有 0 条评论,17人围观)

还没有评论,来说两句吧...

相关阅读

    相关 XMLXML - Schema

    Xml Schema类似于DTD,定义了XML文档的逻辑结构,基本功能如下: a、定义可出现在文档中的元素及元素属性。 b、定义哪个元素是子元素。 c、定义子元素的次

    相关 XMLXML - DTD

    DTD即Document Type Definition文档类型定义,规定了XML文档的逻辑结构,可在XML文档中声明,也可作为一个外部引用。通过DTD,我们可以知道XML文档