<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>
1.2.6 实体引用
在 XML 中,一些字符拥有特殊的意义。 如果你把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。 这样会产生 XML 错误:
复制代码 代码如下:
<message>if salary < 1000 then</message>
为了避免这个错误,请用实体引用来代替 “<” 字符:
复制代码 代码如下:
<message>if salary < 1000 then</message>
在 XML 中,有 5 个预定义的实体引用:
复制代码 代码如下:
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
注释:在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
1.2.7 XML中的注释
在 XML 中编写注释的语法与 HTML 的语法很相似:
复制代码 代码如下:
<!-- This is a comment -->
在 XML 中,空格会被保留 HTML 会把多个连续的空格字符裁减(合并)为一个:
复制代码 代码如下:
HTML: Hello my name is David.
输出: Hello my name is David. 在 XML 中,文档中的空格不会被删节。
1.2.8 以 LF 存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用CR来存储新行。
1.3 XML CDATA
所有XML文档中的文本均会被解析器解析。
只有CDATA区段(CDATA section)中的文本会被解析器忽略。
1.3.1 PCDATA
PCDATA指的是被解析的字符数据(Parsed Character Data)。
XML解析器通常会解析XML文档中所有的文本。 当某个XML元素被解析时,其标签之间的文本也会被解析:
复制代码 代码如下:
<message>此文本也会被解析</message>
解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个例子中,其中的元素包含着另外的两个元素(first和last):
复制代码 代码如下:
<name><first>Bill</first><last>Gates</last></name>
而解析器会把它分解为像这样的子元素:
复制代码 代码如下:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
1.3.2 转义字符
非法的XML字符必须被替换为实体引用(entity reference)。
假如您在XML文档中放置了一个类似 “<” 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:
复制代码 代码如下:
<message>if salary < 1000 then</message>
为了避免此类错误,需要把字符 “<” 替换为实体引用,就像这样:
复制代码 代码如下:
<message>if salary < 1000 then</message>
在 XML 中有 5 个预定义的实体引用:
复制代码 代码如下:
< < 小于
> > 大于
& & 和号
' ' 省略号
" " 引号
注释:严格地讲,在XML中仅有字符”<“和”&“是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
1.3.3 CDATA
术语CDATA指的是不应由XML解析器进行解析的文本数据(Unparsed Character Data)。
在 XML 元素中,”<“ 和 ”&“ 是非法的。
“<” 会产生错误,因为解析器会把该字符解释为新元素的开始。 “&” 也会产生错误,因为解析器会把该字符解释为字符实体的开始。
某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。 CDATA 部分中的所有内容都会被解析器忽略。 CDATA 部分由 “<![CDATA[” 开始,由 “]]>” 结束:
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<response>
<header>
<respcode>0</respcode>
<total>1736</total>
</header>
<result>
<album>
<album_id>320305900</album_id>
<title> <![CDATA[ 电影侃侃之初恋永不早 ]]> </title>
<tag> <![CDATA[ 18岁以上 当代 暧昧 华语 ]]> </tag>
<img></img>
<img180236></img180236>
<img11577></img11577>
<img220124></img220124>
<category_id>1</category_id>
<score>0.0</score>
<voters>0</voters>
<tv_sets>0</tv_sets>
<duration>00:38:57</duration>
<year> <![CDATA[ 2014 ]]> </year>
<tv_focus>跟爱情片学把妹心经</tv_focus>
<episode_count>1</episode_count>
<directors> <![CDATA[ 关雅荻 ]]> </directors>
<mainactors> <![CDATA[ 关雅荻 ]]> </mainactors>
<actors> <![CDATA[ ]]> </actors>
<vv2> <![CDATA[ 15 ]]> </vv2>
<timeText> <![CDATA[ 今天 ]]> </timeText>
<first_issue_time> <![CDATA[ 2014-10-16 ]]> </first_issue_time>
<up>0</up>
<down>0</down>
<download>1</download>
<purchase_type>0</purchase_type>
<hot_or_new>0</hot_or_new>
<createtime>2014-10-16 12:25:08</createtime>
<purchase>0</purchase>
<desc> <![CDATA[
本期节目主持人介绍新近上映的口碑爱情片,。主持人轻松幽默的罗列出胡鳄鱼导演拍摄的爱情片越来越接地气,博得观众的认同和追捧,更提出“初恋永远不嫌早”的口号。观众可以跟着爱情片学习把妹心经。
]]> </desc>
<ip_limit>1</ip_limit>
<episodes/>
</album>
</result>
</response>
这是展示一部电影的具体数据,包括标题、介绍、内容、导演、演员、时长、上映年份等很多内容。
1.5 XML树结构
XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
1.5.1 一个XML文档实例
XML使用简单的具有自我描述性的语法:
复制代码 代码如下: