XML基础及特殊字符转义 - 2

233 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

XML基础语法规范

XML可以由如下概念中的部分或者全部组成. 文档声明; 元素/标签; 属性; 注释; 文本区域.

文档声明

<?xml version="1.0"?> 
<?xml version="1.0" encoding="UTF-8"?> 
<?xml version="1.0" standalone="yes"?> 
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 

文档声明包含3个属性:

  1. version: 是版本号
  2. encoding: 是 xml 的文件编码
  3. standalone="yes/no": 表示这个xml文件是否是独立的xml文件

元素/标签

所谓XML元素, 指的是从开始标签直到结束标签之间的部分, 包含开始和结束标签本身.

XML元素可包含其它的元素, 文本或者两者兼而有之. 此外, XML元素也可以拥有属性.

示例:

<bookshelf>
<book category="CHILDREN">
  <title>Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title>Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookshelf> 

上例中, 元素bookshelf和book都拥有其它元素. 元素title, author, year, price只有文本内容. 只有元素book拥有属性(category="CHILDREN").

XML元素命名必须符合规范:

  • 元素名称可以含字母, 数字以及其他的字符, 但不能以数字或者标点符号开始.
  • 元素名称不能以字符"xml"或者"XML", "Xml")开始.
  • 元素名称不能包含空格或者冒号(冒号留给命名空间)

XML没有任何保留字, 名称可以自定义.

属性

所谓"属性", 是指元素的属性, 用于为元素提供额外的信息. 元素属性所对应的值, 即为属性值, 必须以双引号包裹.

示例:

<!-- gender 是一个属性 -->
<person gender="male">
  <firstname>Andy</firstname>
  <lastname>Smith</lastname>
</person> 

<!-- gender 是一个子元素 -->
<person>
  <gender>male</gender>
  <firstname>Andy</firstname>
  <lastname>Smith</lastname>
</person> 

上例中, gender分别以属性和元素的形式出来, 为元素person提供相同的信息.

注释

XML从HTML发展而来, 保留了与HTML相同格式的注释.

<!-- comments -->

文本区域

CDATA是为XML元素的值, 意味着Character Data, 内容为纯文本, 不会被XML语法特殊解析.

CDATA格式为:

<string><![CDATA[纯文本原样显示]]></string>

CDATA把整段文本解释为纯字符字符值, 即使其中包含XML预定义的特殊字符. 其中, 纯文本显示区域中, 可以输入除]]>以外任意字符,且不能嵌套输入.