当前位置: 首页 > 编程日记 > 正文

XML 特殊字符处理和 CDATA

在处理XML数据时,特殊字符要特殊处理,不能和节点字符混淆。

所有 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 部分结尾的 "]]>" 不能包含空格或折行。

摘自:http://www.w3school.com.cn/xml/xml_cdata.asp

转载于:https://www.cnblogs.com/iampkm/p/3519338.html

相关文章:

zookeeper集群环境搭建

2019独角兽企业重金招聘Python工程师标准>>> 至少3台zookeeper:第一台:con/zoo.cfgtickTime2000 initLimit10 syncLimit5 dataDirC:\\Users\\Administrator\\Desktop\\Zookeepers\\zookeeper-3.4.6.1\\data dataLogDirC:\\Users\\Administrator\\Desktop\\Zookeeper…

ASP.NET遍历配置文件的连接字符串

在ASP.NET 2.0中&#xff0c;提供了更方便的配置文件访问的类&#xff0c;具体可以到 System.Configuration 名称空间下进行查看。本文提供一种在开发过程中常用的得到数据库字符串的方法&#xff0c;为方便使用&#xff0c;写成一个方法进行调用&#xff1a; public string Ge…

#define WIN32_LEAN_AND_MEAN 的作用

[转]#define WIN32_LEAN_AND_MEAN 的作用 今天看了用mysql的库vc连接数据库,结果我用mfc application向导建立一个工程,然后添加#include "mysql.h"(已经设置好了环境),编译出现了一大堆错误,如下 Compiling...StdAfx.cppc:mysqlincludemysql_com.h(116) : error C21…

​《头号玩家》中的“绿洲”,用 VR 可以找到

图源&#xff1a;百度百科出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;2045年&#xff0c;现实世界令人失望&#xff0c;人们将救赎的希望寄托于“绿洲”&#xff0c;一个虚拟游戏宇宙。人们只要戴上VR设备&#xff0c;就可以进入这个与现实形成强烈反差的虚拟世界…

Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)

上篇文章介绍了Android开发的设计理念的一部分&#xff0c;并没有得到博友们的多大认可&#xff0c;仅仅看到了一位博友在以下留言期待下一篇文章的发表&#xff0c;为了这小小的唯一支持。我决定继续把后面的8个要点介绍一下&#xff0c;自己也潜心反省一下&#xff0c;自己的…

Espresso小试

Espresso开源了&#xff0c;那就试着用一下&#xff0c; 1. 下载Espresso Espresso没有提供单独的jar包下载&#xff0c;建议clone整个项目或者下载zip包 git clone https://code.google.com/p/android-test-kit/ 或从这里下载&#xff1a;https://code.google.com/p/android-t…

XML与DataSet的相互转换类

送给大家一个XML与DataSet的相互转换的类:XmlDatasetConvert 该类提供了四种方法&#xff1a;1、将xml对象内容字符串转换为DataSet2、将xml文件转换为DataSet3、将DataSet转换为xml对象字符串4、将DataSet转换为xml文件 XmlDatasetConvert.csusing System;using System.Colle…

想学Python?那这套教程再适合不过了!

如果你想问最近这些年什么编程语言最值得学习&#xff0c;我相信很多人都会告诉你是Python&#xff01;所以不仅是开发小白&#xff0c;甚至很多开发老手&#xff0c;也都开始学习Python&#xff0c;作为辅助第二语言来提高自己的职场竞争力。不过结合我最近这些年Python的学习…

修改360浏览器 标题栏 显示的文字

作者&#xff1a;韩梦飞沙 Author&#xff1a;han_meng_fei_sha 邮箱&#xff1a;313134555qq.com E-mail: 313134555 qq.com 修改360浏览器 标题栏 显示的文字 dll修改 DLL(Dynamic Link Library)文件是一种常见的应用程序拓展&#xff0c;也叫动态链接库文件。若遇到一些已经…

联邦学习的隐忧:来自梯度的深度泄露

作者 | Ligeng Zhu and Song Han编译 | 对外经济贸易大学金融科技实验室头图 | 下载于视觉中国【编者按】数据交易流通是数据要素市场建立的关键环节。为了在推动数据流动的同时保护数据安全、个人信息和隐私&#xff0c;隐私计算技术因运而生。目前&#xff0c;该技术分为三个…

.net 中 using的几种用法

1. using指令。using 命名空间名字&#xff0c;这样可以在程序中直接用命令空间中的类型&#xff0c;而不必指定类型的详细命名空间&#xff0c;类似于Java的import&#xff0c;这个功能也是最常用的&#xff0c;几乎每个cs的程序都会用到。例如&#xff1a;using System; 一般…

少走弯路的10条忠告

如何在涉世之初少走弯路&#xff0c;有一个好的开端&#xff0c;开始一番成功的事业&#xff1f;以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧&#xff0c;比起所学的课堂课程来&#xff0c;它毫不逊色&#xff01; 1. 买个闹钟&#xff0c;以…

linux实战考试题:批量创建用户和密码(不能使用循环)

批量创建10个用户&#xff0c;并且设置随机8位密码&#xff0c;要求不能用shell的循环&#xff08;例如&#xff1a;for,while等&#xff09;&#xff0c;只能用linux命令及管道实现。方法1&#xff1a;[rootoldboy /]# echo stu{01..10}|tr " " "\n"|sed …

路径,文件,目录,I/O常见操作汇总

摘要: 文件操作是程序中非常基础和重要的内容&#xff0c;而路径、文件、目录以及I/O都是在进行文件操作时的常见主题&#xff0c;这里想把这些常见的问题作个总结&#xff0c;对于每个问题&#xff0c;尽量提供一些解决方案&#xff0c;即使没有你想要的答案&#xff0c;也…

Winform开发的界面处理优化

在Winform开发中&#xff0c;客户体验是个很好的参考性指标&#xff0c;如果一个功能使用的时候感觉很流畅&#xff0c;说明我们的程序执行效率还不错&#xff0c;但是随着数据的真多&#xff0c;原先可能流程的地方可能会变得比较卡&#xff0c;这时候就需要追本索源&#xff…

人工智能语音技术支持“多情感程度”调节,细腻演绎“人声”

近期&#xff0c;微软发布最新语音技术&#xff0c;支持“情感程度”轻松调节&#xff0c;令智能语音的情感表现力更加细腻可控。 人类的情感很大程度上体现于语音语调的微妙变化&#xff0c;比如一句“再见”&#xff0c;有时是平静而含蓄的&#xff0c;有时是开心而轻松的&a…

HDU 1431 素数回文

有人问我这个问题。个人感觉暴搜会TLE O(n*sqrt(n))。n100000000&#xff1b;&#xff08;推断素数用2~sqrt(n)1 去除&#xff09; 还是枚举好了。枚举 1~10000&#xff0c;把他每一位存下来&#xff0c;回文数已知 left 。求 right &#xff0c;然后组合起来。比如 1 &#xf…

递归的妙用—遍历子控件

我们在ASP.NET编程中, 经常需要遍历一个Web控件的子控件 &#xff0c;找到所需的控件并获取控件中相应的值。以前我都是采用循环的方式遍历子控件&#xff0c;但当子控件是复杂的树形结构&#xff0c;比如&#xff1a;子控件也有子控件&#xff0c;子控件的子控件也有子控件。这…

【原创】关于代码质量的打油诗

要想代码写得好&#xff0c;以下规则供参考&#xff1a;代码格式规范多&#xff0c;静态检查常做到。代码注释要工整&#xff0c;垃圾注释不可要。重要分支详注释&#xff0c;复杂逻辑拆分细。数据类型多注意&#xff0c;经常判空习惯好。常量类型须定义&#xff0c;魔幻数字要…

Java 开发技巧详细知识体系总结

本篇文章是我们整理的一份架构师的成长路线&#xff0c;包括了并发编程、设计模式、常用框架、中间件、微服务与分布式、常用工具、JVM、MySQL、数据结构与算法&#xff0c;还有架构师精选视频、架构师成长路线高清大图。又是新的一年&#xff0c;每一年都会有人在成为架构师的…

23-hadoop-hive的DDL和DML操作

跟mysql类似, hive也有 DDL, 和 DML操作 数据类型: https://cwiki.apache.org/confluence/display/Hive/LanguageManualDDL : primitive_type| array_type| map_type| struct_type| union_type -- (Note: Available in Hive 0.7.0 and later) primitive_type为基本类型, 包括:…

经典正则表达式

正则表达式用于字符串处理&#xff0c;表单验证等场合&#xff0c;实用高效&#xff0c;但用到时总是不太把握&#xff0c;以致往往要上网查一番。我将一些常用的表达式收藏在这里&#xff0c;作备忘之用。本贴随时会更新。 匹配中文字符的正则表达式&#xff1a; [/u4e00-/u9…

腾讯云TDSQL数据库核心技术理论取得进展 ,同时发布数据异常检测工具

近日&#xff0c;腾讯云和中国人民大学在数据库基础研究上有了进展&#xff0c;聚焦在“数据异常”领域&#xff0c;这是数据库可串行化理论体系中的重要概念。 数据异常是打开并发访问控制技术大门的金钥匙。在数据库行业中&#xff0c;以往只发现了10多种数据异常现象&#…

Android应用工程文件组成

src目录&#xff1a;java代码源文件。gen目录&#xff1a;R.java&#xff1a;静态内部类&#xff0c;系统自动生成&#xff0c;无需程序员维护。assets目录&#xff1a;资源目录&#xff0c;html&#xff0c;多媒体文件。bin目录&#xff1a;应用程序所生成的apk。res目录&…

matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)

在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C程序调用&#xff0c;这样就可以实现matlab和C混合编程的目的。 1. 使用matlab生成dll文件 1.1 首先需要带有mcc编译器的matlab软件&#xff0c;这个可以通过在matlab命令行中输入&#xff1a;!mcc命令来查看 1.2…

当前日期得到本周的开始和结束日期

/// <summary> /// 本周起止时间 /// </summary> /// <param name"dt"></param> /// <returns></returns> private string weekrange(System.DateTime dt) { int weeknow Convert.ToInt32(dt.DayOfWeek); int day…

分享一个mysql 复杂查询的例子

发布&#xff1a;脚本学堂/MySQL 编辑&#xff1a;thebaby 2013-08-23 09:37:37 【大 中 小】 有关mysql复杂查询的一个例子&#xff0c;正在学习mysql的朋友&#xff0c;可以作为一个参考。在mysql中&#xff0c;LOCATE(dmin,email)1 表示dmi字符在email字符中出现的索引位…

百度携手同济大学,瞄准AI、智慧交通等核心科技领域攻关

4月14日&#xff0c;百度与同济大学在上海举行了战略合作框架协议签约仪式。百度与同济大学将围绕人工智能、智慧交通等方面&#xff0c;共同开展科研攻关&#xff0c;创造AI技术及产业交流平台、搭建AI应用人才培养机制&#xff0c;力争取得基础理论和关键核心技术的突破。 签…

怎样做才是最优雅方式切换 web 项目数据源 ?

随着业务变迁/需求变更&#xff0c;JavaEE 应用中会被迫连接多个数据源进行业务处理。 怎样在不影响原有项目结构的情况下&#xff0c;已最优雅/最简洁的方式动态切换数据源呢&#xff1f; 本文已一次添加数据源后动态切换实践为例&#xff0c;描述整个思考和实践过程&#xff…

C#开发编码规范

C#开发编码规范 注记&#xff1a;Pascal 大小写形式——所有单词第一个字母大写&#xff0c;其他字母小写。Camel 大小写形式——除了第一个单词&#xff0c;所有单词第一个字母大写&#xff0c;其他字母小写。类名使用Pascal大小写形式 public class HelloWorld{ …}方法使用…