资讯专栏INFORMATION COLUMN

XML 语法速查笔记

AlanKeene / 2514人阅读

摘要:语法规则速查所有元素均需要有关闭标签,比如均必须跟着一个结尾标签大小写敏感必须正确地嵌套必须有且只有一个根元素属性值必须加上引号,至于属性名则无需引号。命名空间约定使用冒号进行分分隔。

相比起 Json,XML 是一种相对古老和复杂、但功能更加强大的数据存储/传输格式。也因为其复杂,有一些语法需要记录一下,在使用多种语言进行 XML 操作的时候备查。


范例

下面是一个相对比较完整的 XML 范例:




   Andrew
   
      2018-10-11
      2018
      10
      11
   
   这是一个示例性质的 XML 范例。可以看到,一些关键字符比如双引号 " 是需要转义的。
   
      
      amc
   

以下内容主要根据上述范例进行说明。


概念和关键词

XML:可扩展标记语言(EXtensible Markup Language)

XML 文档:上述范例就是一个 XML 文档

元素:一个 ...及其中间的部分加起来,就是一个元素

XML 标签(Tags):范例中的 文字就是一对标签

根元素:每个 XML 文档需要有且只有一个根元素,这个元素是所有元素的祖先元素

子元素(Children)、同胞元素(Siblings):范例中 元素下的 元素就是子元素,这几个子元素之间互为同胞元素

文本内容(Text):范例中, 元素中的 Andrew 就是文本内容;同理 元素下的 2018-10-11 也是文本内容

属性(Attributes):范例中 main_page 元素中有一段文字 id="1307425",这就是元素 main_page 的属性,其属性名为 "id",属性值 为 “1307425”。


语法规则速查

所有 XML 元素均需要有关闭标签,比如 均必须跟着一个 结尾

XML 标签大小写敏感

XML 必须正确地嵌套

XML 必须有且只有一个根元素

属性值必须加上引号,至于属性名则无需引号。

XML 元素命名规则

强制性的命名规则如下:

元素命名只包含文字(包括非英文的文字)、数字、字符

不能以 “XML” 或其他大写转换后为 “XML” 的字符串开头

不能包含空格

约定俗成(建议)的命名规则,除了上述几条之外,还有:

不要使用减号/连字符 “-”,建议使用下划线 “_

避免使用点 “.” 和冒号 “:

不要使用非 ascii 字符

属性

建议避免使用属性,而是以子元素 + 文本内容的方式来替代。比如:

2018-10-11

建议替换成范例中的:


   2018-10-11
   2018
   10
   11

“转义”

这里借用了 C/C++ 里格式化字符串的 “转义” 一词,但是实际上 XML 没有这个名词,而是 “实体引用”。XML 中有五个预定义的实体引用,在使用的时候需要 “转义”:

字符名 字符 “转义” 后的字符串
小于号 < <
大于号 > >
”and“ 符号 & &
单引号 " '
双引号 " "

其中只有 <& 是确实需要特殊处理的,但是作为规范,上述所有符号实际操作中均应处理。


XML CDATA

XML CDATA 是一个关键字,其包含的内容不会被 XML 解析器解析。CDATA 采用 开头,用 ]]> 结尾。比如范例中的:

注意不同语言或库对 CDATA 的解析方式可能会有所不同,比如 Python 解析 CDATA 后会得到一个普通的 text 值,但是 RapidXML 则会得到一个子元素。

CDATA 也有限制,就是正文中不能包含 ]]>,否则会导致解析错误。


XML 命名空间

这个功能目前笔者觉得比较少用,不过还是记录一下。命名空间约定使用冒号进行分分隔。命名空间可以手动指定,如:


   African Coffee Table
   80
   120

实操中,推荐加上命名空间属性 xmlns,如:


   African Coffee Table
   80
   120

参考资料

XML 编码 - W3school 在线教程

RapidXML解析CDATA类型节点的问题

XML 宣告 XML 標準

XML 在线格式化 - 1

XML 在线格式化 - 2


本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

本文地址:https://segmentfault.com/a/1190000016649785
原文发布于:https://cloud.tencent.com/developer/article/1351914,也是本人的专栏。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42622.html

相关文章

  • XML 语法速查笔记

    摘要:语法规则速查所有元素均需要有关闭标签,比如均必须跟着一个结尾标签大小写敏感必须正确地嵌套必须有且只有一个根元素属性值必须加上引号,至于属性名则无需引号。命名空间约定使用冒号进行分分隔。 相比起 Json,XML 是一种相对古老和复杂、但功能更加强大的数据存储/传输格式。也因为其复杂,有一些语法需要记录一下,在使用多种语言进行 XML 操作的时候备查。 范例 下面是一个相对比较完整的 ...

    JowayYoung 评论0 收藏0
  • 前端复习笔记--1.html标签复习速查

    摘要:可读性,提高代码的可读性,便于多人的修改维护,提高开发效率。主流浏览器都兼容的新标签,对于及以下版本不认识的新元素,可以使用创建一个没用的元素来解决,例如,也可以使用来解决兼容性问题,详情可参考 概览 showImg(https://segmentfault.com/img/bV5JXT?w=1880&h=1050); 文档章节 导航 表示和主要内容不相关的区域 表示一个独...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<