`
beckjacy
  • 浏览: 12175 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

XML中PCDATA与CDATA的区别

 
阅读更多
所有 XML 文档中的文本均会被解析器解析。

只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

PCDATA
PCDATA 指的是被解析的字符数据(Parsed Character Data)。

XML 解析器通常会解析 XML 文档中所有的文本。

当某个 XML 元素被解析时,其标签之间的文本也会被解析:

<message>此文本也会被解析</message>
解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个例子中,其中的 <name> 元素包含着另外的两个元素(first 和 last):

<name><first>Bill</first><last>Gates</last></name>
而解析器会把它分解为像这样的子元素:

<name>
   <first>Bill</first>
   <last>Gates</last>
</name>
转义字符
非法的 XML 字符必须被替换为实体引用(entity reference)。

假如您在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:

<message>if salary < 1000 then</message>
为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:

<message>if salary &lt; 1000 then</message>
在 XML 中有 5 个预定义的实体引用:
&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 省略号
&quot; " 引号
注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

CDATA
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
  {
  return 1;
  }
else
  {
  return 0;
  }
}
]]>
</script>
在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。

关于 CDATA 部分的注释:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。

标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
分享到:
评论

相关推荐

    区分CDATA和PCDATA

    数据库相关,CDATA和PCDATA的区别和用法

    《XML》实验任务书 XML Basics & DTD 答案和解答

    3、为第二步中得到的SpyBase1.xml、SpyBase2.xml分别编写相应的外部DTD文档,建立模式与数据之间的关联,并进行文档有效性验证。在编写的DTD文档中,要求在DTD文档中使用参数实体来替换所有的#PCDATA和CDATA。 ...

    省市区表,xml省市区

    自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为&lt;!DOCTYPE PCAroot[ &lt;!ELEMENT PCAroot (Province*)&gt; &lt;!ELEMENT Province (City*)&gt; &lt;!ELEMENT City (Area*)&gt; &lt;!ELEMENT Area (#PCDATA)&gt; &lt;!...

    xml入门教程/xml入门教程

    xml文档是有标签和标签中的内容组成的,标签和标签中的内容合成为元素 非空元素 (起始标签) aaa(内容) (结束标签) 空元素 格式良好的XML文档的规范 1)文档声明位于文件的开头&lt;?xml verson="1.0"?&gt; 2)文档中...

    一个简单的xml文件

    xml version="1.0" encoding="GBK"?&gt; &lt;!DOCTYPE 联系人列表[ &lt;!ENTITY content "某公司部分联系人信息"&gt; &lt;!ELEMENT 联系人列表 (说明,联系人)&gt; &lt;!ELEMENT 联系人 (姓名,ID,公司,电话,地址)&gt; &lt;!ELEMENT 姓名 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    你要在DTD中定义一个元素,然后在XML文档中使用。元素的定义语法为:&lt;!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*&gt; 说明: "&lt;!ELEMENT" 是元素的声明,说明你要定义的是一个元素; 声明后面的"DESCRIPTION",...

    XML实用大全----xml详细参考书

    7.5.1 利用字符引用在XML文件中插入字符... 173 7.5.2 其他字符集与Unicode字符集之间的转换... 173 7.5.3 如何使用其他字符集编写XML. 174 7.6 本章小结... 176 第二部分 文档类型定义... 177 第8章 文档类型...

    网页中CDATA标记的说明

    PCDATA是在 XML约束文档里使用的,如DTD类型的约束文档,在这里面表示元素的内容或属性的取值范围等等,是字符串形式的。 代码如下: [removed] &lt;![CDATA[ function matchwo(a,b){ if (a &lt; b&gt; [removed] XML ...

    xml实用大全和轻松学习手册和无废话xml

    7.5.1 利用字符引用在XML文件中插入字符 173 7.5.2 其他字符集与Unicode字符集之间的转换 173 7.5.3 如何使用其他字符集编写XML 174 7.6 本章小结 176 第二部分 文档类型定义 177 第8章 文档类型定义和合法性 177 ...

    XMl实用大全(资料全易学习)

    7.5.1 利用字符引用在XML文件中插入字符 173 7.5.2 其他字符集与Unicode字符集之间的转换 173 7.5.3 如何使用其他字符集编写XML 174 7.6 本章小结 176 第二部分 文档类型定义 177 第8章 文档类型定义和合法性 177 ...

    XML实用大全(web开发必备手册)

    7.5.1 利用字符引用在XML文件中插入字符... 173 7.5.2 其他字符集与Unicode字符集之间的转换... 173 7.5.3 如何使用其他字符集编写XML. 174 7.6 本章小结... 176 第二部分 文档类型定义... 177 第8章 文档类型...

    StudentBaseDTD文档

    在编写的DTD文档中,要求在DTD文档中使用参数实体来替换所有的#PCDATA和CDATA。DTD文档可以用下面的二种方法编辑: A: 用xmlspy中的text视图或者notepad 手工编写DTD文档 B: 用xmlspy中的Grid视图编写DTD文档

    day023-xml解析笔记和代码.rar

    不同的语言都支持XML解析(将XML转换为对应语言中的数据) 1. 数据交换格式(一般不用了,用json代替了) 2. 配置文件都使用XML格式,框架都是用xml和Properties作为配置文件。 1.3. 使用:(掌握...

    XML编程综合资料库

    7.5.1 利用字符引用在XML文件中插入字符... 173 7.5.2 其他字符集与Unicode字符集之间的转换... 173 7.5.3 如何使用其他字符集编写XML. 174 7.6 本章小结... 176 第二部分 文档类型定义... 177 第8章 文档类型...

    XML实用大全

    173 7.5.1 利用字符引用在XML文件中插入字符... 173 7.5.2 其他字符集与Unicode字符集之间的转换... 173 7.5.3 如何使用其他字符集编写XML. 174 7.6 本章小结... 176 第二部分 文档类型定义... 177...

    zyXML解析类模块源码

    zyXML 是一个轻便、小巧的,纯易语言代码来解析XML的模块。优点:。1、不依赖任何DLL、支持库、系统组件(Microsoft.XMLDOM等对象)。2、支持UTF-8 、UTF-16 等编码。3、支持 XPath 语法来查询节点。4、支持 CDATA ...

    易语言-zyXML解析类模块

    优点:1、不依赖任何DLL、支持库、系统组件(Microsoft.XMLDOM等对象)2、支持UTF-8 、UTF-16 等编码3、支持 XPath 语法来查询节点4、支持 CDATA5、开源(如果有任何问题可以自己修改)缺点:1、加载速度稍微逊色于...

Global site tag (gtag.js) - Google Analytics