转义字符
不合法的XML字符必须被替换为相应的实体。
如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:
<message>if salary < 1000 then</message>
为了避免出现这种情况,必须将字符"<" 转换成实体,象下面这样:
<message>if salary < 1000 then</message>
下面是五个在XML文档中预定义好的实体:
< < 小于号
> > 大于号
& & 和
' ' 单引号
" " 双引号
实体必须以符号"&"开头,以符号";"结尾。
注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。
CDATA部件
在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[" ,将很有可能出错哦。
同样要注意在字符串"]]>"之间没有空格或者换行符。
==========================================================================================
RSS中出现了一些麻烦的字符,比如 &,®,™ 等。这些字符放到XML中,如果不做特殊处理,就会有错误产生。比如下面的XML:
<item>&</item>
在IE 浏览器,以及一些解析用的DOM中解析这个片段,就会产生错误。
在W3C的技术规范中,也可以看到这样的字符不允许出现:
http://www.w3.org/TR/2001/REC-xml-c14n-20010315
比如:对 Text Nodes 允许的字符有如下要求: the string value, except all ampersands are replaced by &, all open angle brackets (< ) are replaced by <, all closing angle brackets (> ) are replaced by >, and all #xD characters are replaced by 
.
由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:
比如DTD文件中增加以下部分:
<!-- PERCENT SIGN -->
<!ENTITY amp "&#38;">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "®">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "™">
并在XML中定义这个XML文件需要这个DTD支持:
<!DOCTYPE HeadCount SYSTEM "eula.dtd">
这样在XML文件中出现 & ® ™ 这类特殊字符就不会再报错了。
有关更多的特殊字符可以参看:
http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt
那里罗列的特殊字符有近200个。
转自:
http://blog.csdn.net/high_mount/article/details/2953335
分享到:
相关推荐
### Android XML转义字符 在Android开发过程中,经常会遇到需要在`res/values/strings.xml`文件中使用特殊字符的情况。由于XML是一种标记语言,它对某些字符有特定的规定,如果直接将这些特殊字符写入XML文件,则...
#### 五、XML转义字符使用案例 考虑以下XML示例: ```xml <message>if salary < 1000 then ``` 如果不使用转义字符,XML解析器会将“<”误认为是新标签的开始。为了避免这种情况,应使用`<`来替代“<”,...
HTML和XML语言中,转义字符扮演着至关重要的角色,因为它们允许开发者在文本中插入特殊字符,而不会引起解析错误或改变文档结构。在HTML中,某些字符如", ">", "&"拥有特殊的含义,不能直接在文档中使用。这是因为...
1. 常用的XML转义字符写法 在XML中,一些字符具有特定的含义,如“<”表示一个新元素的开始,“>”表示元素的结束,而“&”用于引用字符实体。如果要在XML文件中表示这些字符本身的字面值,就必须使用它们对应的转义...
下面是对Android开发中常见XML转义字符的详细解释: 1. 双引号 (`"`):在XML中,双引号用于包围属性值。如果要在文本中直接使用双引号,需要使用转义序列 `"` 或 `"`。 2. 单引号 (`'`):虽然在XML中通常使用...
为了解决这个问题,我们需要使用转义字符序列来代替这些特殊字符。 例如,小于号 `的转义序列是 `<`,大于号 `>` 的转义序列是 `>`,和号 `&` 的转义序列是 `&`。这样,即使在文本中出现这些特殊字符,...
Tinyxml不能读取的字符 要转义-可以查百度文库
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在互联网上,尤其是在数据交换、配置文件和文档存储...不论是手动编写XML文档,还是通过编程语言操作XML,都应确保特殊字符被适当地转义或编码。
当遇到包含特殊字符如 "和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,我们可以使用CDATA(Character Data)段来封装这些文本,使得XML解析器将其视为纯文本...
XML提供了两种方式来处理这些问题:转义字符和CDATA(Character Data)块。 1. 转义字符: - "&" 转义为 "&" - "转义为 "<" - ">" 转义为 ">" - """(双引号)转义为 """ - '''(单引号)转义...
CDATA(Character Data)是XML中的一种特殊语法,用于表示一段纯文本,其中的XML特殊字符(如", ">", "&")不需要转义。在XML中,可以使用`<![CDATA[ ... ]]>`来创建CDATA段。当处理包含大量特殊字符的数据时,使用...
XML能够传输大部分的可见字符,但是一些特殊的控制字符(如换行符\n、制表符\t等)以及某些特殊符号(如<、>、&等)被称为转义字符,它们在XML文档中不能直接出现,否则会破坏XML的结构或被误解析。为了在XML中传输...
在实际开发中,转义字符不仅限于上述用途,它们还可以在正则表达式、XML和JSON等数据格式中发挥作用。例如,如果你正在编写一个正则表达式,可能需要转义特殊字符以确保它们被当作普通字符处理,而不是正则表达式的...
本文将深入探讨XML中的非法字符以及如何通过转义字符来解决这一问题。 在XML文档中,有两个字符是严格禁止出现的,它们分别是小于号 "和和号 "&"。这是因为这两个字符在XML语法中具有特殊含义,"用于开始一个元素...
C# 提供了一个方便的方法 `System.Security.SecurityElement.Escape()` 来自动转义XML字符串中的特殊字符。例如,你可以这样使用: ```csharp string xmlContent = "这是一段包含特殊字符<>&\"'的字符串"; string ...
同时,为了处理XML的特殊字符,如<、>等,工具类可能还包含了字符转义的逻辑。 关于`maven依赖.txt`文件,这通常包含了项目中使用的第三方库。在XML和Map的转换过程中,可能用到了如`dom4j`或`jaxb`等库,它们提供...
一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。