本文主要介绍xml中CDATA作用。

为了解决属性值中使用XML中的特殊字符,xml使用类似的转义字符去描述。

字符
转移字符

<

>
&
&
'
'
"
"
CDATA段
       在某些情况下,我们在xml中要使用大量XML敏感的字符,而我们又不希望逐一的对其进行转移。这时候使用CDATA段是最理想的。

1)语法格式:< ! [ CDATA [忽略检查的文本]]>

2)在CDATA中将文本的内容写入,那么这段文本内容会被忽略检查,无论里面是否包含XML敏感内容,全部被当作普通的文本去看待。例如:

<content>
    <![ CDATA [
        <script language="javascript">
            function sayhello(){    alert("hello!");        }
        </script>
    ] ] >  
</content>

CDATA的定义:

CDATA DTD的属性类型,全名character data,指不由xml解析器进行解析的文本数据。在标记的CDATA下,所有的标记、实体引用(特殊字符)都会被忽略,而被当作字符数据来看待。

CDATA的形式:

CDATA的形式如下: <![CDATA[文本内容]]> CDATA的文本内容中不能出现字符串“]]>”,也不能嵌套。 CDATA区域是由“<![CDATA["为开始标记,以“]]>”为结束标记,注意CDATA为大写。

DTD实例:

指定类型为CDATA以后就可以在XML中被用于实例,例如下面payment 元素的type属性被指定为CDATA类型后在XML中就可以赋于”check”的字符数据。

<!ATTLIST payment type CDATA "check">
1
XML 实例:

在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。例如:

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

<name>
<first>Bill</first>
<last>Gates</last>
</name>
1
2
3
4
转义字符:

非法的xml字符必须被替换为实体引用(entity reference)。如果在XML文档中使用类似”< ” 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:

<message>if salary < 1000 then</message>
1
为了避免出现这种情况,必须将字符”< ” 转换成实体,象下面这样:

<message>if salary < 1000 then</message>
1
在 XML 中有 5 个预定义的实体引用:

&lt;     <    小于号
&gt;     >    大于号
&amp;   &    与(和)号
&apos;  '     单引号
&quot;  "     双引号
1
2
3
4
5
注释:严格地讲,在 XML 中仅有字符 “<”和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
---------------------

CDATA

CDATA 全名:character data。所有 XML 文档中的文本均会被解析器解析,除了 CDATA 区段(CDATA section)中的文本会被解析器忽略。

CDATA的形式如下: <![CDATA[文本内容]]> 。

CDATA的文本内容中不能出现字符串“]]>”。另外,CDATA不能嵌套。

XML 实例: 在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。 CDATA区域是由“<![CDATA["为开始标记,以“]]>”为结束标记,注意CDATA为大写。

QDom 解析 xml 中的CDATA

例如 解析下面的 Data 节点中的 CDATA,并将图片数据加载到内存中:
<Data>
   <![CDATA[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]]>
</Data> 
        QDomText text  = elem.firstChild().toText();
        QByteArray data = text.data().toUtf8();
        data = QByteArray::fromBase64(data);
        if(!data.isEmpty()){
            QPixmap pix;
            pix.loadFromData(data);
            image->setBitmap(pix);
        }
或者
        QSring data= elem.firstChild().nodeValue();
        QByteArray bitData = data.toUtf8();
        bitData = QByteArray::fromBase64(bitData);
        pix.loadFromData(bitData);

--------------------- 
转自:https://blog.csdn.net/qq_33266987/article/details/54288051

https://blog.csdn.net/lmb55/article/details/52761273

https://blog.csdn.net/psp0001060/article/details/50582031

XML 中的 ﹤![CDATA[ ]]相关推荐

  1. HTML显示xml中的CDATA内容

    http://zhengjunwei2007-163-com.iteye.com/blog/656098 HTML中的<xmp>标签和XML中的<![CDATA []]>标签是 ...

  2. XML 中的 ﹤![CDATA[ ]]>

    XML 中的 <![CDATA[ ]]> 因为这个是xml格式的,所以不允许出现类似">"这样的字符 CDATA 全名:character data.所有 XML ...

  3. XML中的CDATA(字符数据)

    Introduction 介绍 The Term CDATA basically refers to Character Data. In XML it is basically a block of ...

  4. java cdata类,分析XML中的CDATA类型在RSS中的使用

    除经特别注明外,本站文章版权归JScud Develop团队或其原作者所有. 转载请注明作者和来源.  scud(飞云小侠)    欢迎访问 JScud Develop 根据XML中CDATA类型的规 ...

  5. XML中的CDATA是什么

    XML 解析器通常情况下会处理XML文档中的所有文本. 当XML元素被解析的时候,XML元素内部的文本也会被解析: <!--<br/ /><br/ />Code high ...

  6. java 正则替换cdata_替换xml中的cdata标记

    @Jim Garrison在上面的评论中是正确的:没有办法用正则表达式强健地解析XML / HTML.该语言过于复杂,无法用正则表达式表示. 但是,这并不意味着您不能编写一个涵盖大多数合理案例的正则表 ...

  7. IP得到天气预报(3)———XML中CDATA的提取

    上一个Session中,我们可以得到其中的部分信息了.也就是说,如果你自己看的话,就会发现雅虎的天气中,这样读取XML我们也只能得到相应的最低温度,最高温度.或者明天的,或者今天的湿度风速.这是东西都 ...

  8. XML中PCDATA与CDATA的区别

    XML中PCDATA与CDATA的区别 2011-02-10 19:27:25|  分类: XML |  标签:xml中pcdata与cdata的区别     字号:大中小 订阅 所有 XML 文档中 ...

  9. Mybatis XML文件中使用CDATA标签

    0.背景   当下,使用Mybatis的XML文件书写复杂SQL,依然是一种主流的选择.那么,我们在书写SQL语句时,要时刻提醒自己,自己正在书写一个XML文件,XML文件对于一些特殊字符,是会进行解 ...

最新文章

  1. grep 正则表达式及选项以及注意
  2. 计算机技能最新需求排名:Python增速爆炸,SQL和Java老当益壮,AWS令人惊讶
  3. 类似于HttpModule的注入方式的事件机制示例
  4. python close_wait_线上大量CLOSE_WAIT原因深入分析
  5. 简单聊聊Python协程
  6. 贪心算法——洛谷(P4995)跳跳!
  7. 【转】计算机视觉简介
  8. 撩课-Web大前端每天5道面试题-Day4
  9. XML 处理利器 : XStream
  10. 9. DICOM图像显示-DCMTK-窗宽窗位调整和源码分析
  11. IPv4/IPv6、DHCP、网关、路由
  12. Django之restframework中路由Routers
  13. Python字典嵌套
  14. Oracle 19c 新特性:ADG的自动DML重定向增强读写分离--ADG_REDIRECT_DML
  15. 7-1 求e的近似值 (15 分)
  16. 面试常见问题之adb命令
  17. 如何用 Python 哄女朋友开心?看了都说好!
  18. ROC曲线和AUC评价指标:为什么AUC可以表示正例预测值大于负例预测值的概率?
  19. django分页(两种办法)
  20. 小度路由添加airplay

热门文章

  1. 基于Unity尝试唇同步/LipSync/OVRLipSync(附Demo及源码)
  2. POWER BI里如何累计求和(一)
  3. 如何做好自己的职业规划?
  4. html怎么把字做成动画效果,8个华丽的HTML5文字动画特效赏析
  5. 计算机组成原理实验信号cpu,计算机组成原理实验43_实验报告
  6. H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码,实现了跳一跳的基本核心功能
  7. Magento付款方式的判断
  8. html图片后边自动底部对齐,css实现图片与文字底边对齐
  9. 许昌学院校园网服务大厅模拟登录
  10. AP微观和宏观经济学考察重点分析