`

【转】XML 转义字符

 
阅读更多
转义字符
不合法的XML字符必须被替换为相应的实体。

如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:

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

<message>if salary &lt; 1000 then</message>
下面是五个在XML文档中预定义好的实体:

&lt; < 小于号
&gt; > 大于号
&amp; & 和
&apos; ' 单引号
&quot; " 双引号

实体必须以符号"&"开头,以符号";"结尾。
注意: 只有"<" 字符和"&"字符对于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 &amp;, all open angle brackets (< ) are replaced by &lt;, all closing angle brackets (> ) are replaced by &gt;, and all #xD characters are replaced by &#xD;.

由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:

比如DTD文件中增加以下部分:

<!-- PERCENT SIGN -->
<!ENTITY amp "&#38;#38;">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "&#x00AE;">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "&#x2122;">

并在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 XML转义字符 在Android开发过程中,经常会遇到需要在`res/values/strings.xml`文件中使用特殊字符的情况。由于XML是一种标记语言,它对某些字符有特定的规定,如果直接将这些特殊字符写入XML文件,则...

    HTML和XML中的转义字符

    #### 五、XML转义字符使用案例 考虑以下XML示例: ```xml &lt;message&gt;if salary &lt; 1000 then ``` 如果不使用转义字符,XML解析器会将“&lt;”误认为是新标签的开始。为了避免这种情况,应使用`&lt;`来替代“&lt;”,...

    Mybatis在Mapper.xml文件中的转义字符处理方式.pdf

    1. 常用的XML转义字符写法 在XML中,一些字符具有特定的含义,如“&lt;”表示一个新元素的开始,“&gt;”表示元素的结束,而“&”用于引用字符实体。如果要在XML文件中表示这些字符本身的字面值,就必须使用它们对应的转义...

    HTML & XML 转义字符

    HTML和XML语言中,转义字符扮演着至关重要的角色,因为它们允许开发者在文本中插入特殊字符,而不会引起解析错误或改变文档结构。在HTML中,某些字符如", "&gt;", "&"拥有特殊的含义,不能直接在文档中使用。这是因为...

    Android常见XML转义字符(总结)

    下面是对Android开发中常见XML转义字符的详细解释: 1. 双引号 (`"`):在XML中,双引号用于包围属性值。如果要在文本中直接使用双引号,需要使用转义序列 `"` 或 `&quot;`。 2. 单引号 (`'`):虽然在XML中通常使用...

    HTML 转义字符串

    为了解决这个问题,我们需要使用转义字符序列来代替这些特殊字符。 例如,小于号 `的转义序列是 `&lt;`,大于号 `&gt;` 的转义序列是 `&gt;`,和号 `&` 的转义序列是 `&amp;`。这样,即使在文本中出现这些特殊字符,...

    JAVA转义字符

    ### JAVA转义字符详解 在Java编程语言中,转义字符是一种特殊的形式,用于表示一些预定义的字符或控制字符。这些字符对于处理文本、字符串以及格式化输出等任务至关重要。本文将详细介绍Java中的转义字符,包括它们...

    Tinyxml不能读取的字符 要转义-可以查百度文库

    Tinyxml不能读取的字符 要转义-可以查百度文库

    解析XML特殊字符方法

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在互联网上,尤其是在数据交换、配置文件和文档存储...不论是手动编写XML文档,还是通过编程语言操作XML,都应确保特殊字符被适当地转义或编码。

    5、CDATA 和转义字符1

    XML提供了两种方式来处理这些问题:转义字符和CDATA(Character Data)块。 1. 转义字符: - "&" 转义为 "&amp;" - "转义为 "&lt;" - "&gt;" 转义为 "&gt;" - """(双引号)转义为 "&quot;" - '''(单引号)转义...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    CDATA(Character Data)是XML中的一种特殊语法,用于表示一段纯文本,其中的XML特殊字符(如", "&gt;", "&")不需要转义。在XML中,可以使用`&lt;![CDATA[ ... ]]&gt;`来创建CDATA段。当处理包含大量特殊字符的数据时,使用...

    JAVA对象转换成XML(CDATA)

    当遇到包含特殊字符如 "和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,我们可以使用CDATA(Character Data)段来封装这些文本,使得XML解析器将其视为纯文本...

    利用ascii码传输xml转义字符示例

    XML能够传输大部分的可见字符,但是一些特殊的控制字符(如换行符\n、制表符\t等)以及某些特殊符号(如&lt;、&gt;、&等)被称为转义字符,它们在XML文档中不能直接出现,否则会破坏XML的结构或被误解析。为了在XML中传输...

    C#-转义字符-EscapeChar

    在实际开发中,转义字符不仅限于上述用途,它们还可以在正则表达式、XML和JSON等数据格式中发挥作用。例如,如果你正在编写一个正则表达式,可能需要转义特殊字符以确保它们被当作普通字符处理,而不是正则表达式的...

    XML 非法字符(转义字符)

    本文将深入探讨XML中的非法字符以及如何通过转义字符来解决这一问题。 在XML文档中,有两个字符是严格禁止出现的,它们分别是小于号 "和和号 "&"。这是因为这两个字符在XML语法中具有特殊含义,"用于开始一个元素...

    C# XML字符串包含特殊字符的处理转换方法小结

    C# 提供了一个方便的方法 `System.Security.SecurityElement.Escape()` 来自动转义XML字符串中的特殊字符。例如,你可以这样使用: ```csharp string xmlContent = "这是一段包含特殊字符&lt;&gt;&\"'的字符串"; string ...

    java一键xml转map,一键map转xml工具类

    同时,为了处理XML的特殊字符,如&lt;、&gt;等,工具类可能还包含了字符转义的逻辑。 关于`maven依赖.txt`文件,这通常包含了项目中使用的第三方库。在XML和Map的转换过程中,可能用到了如`dom4j`或`jaxb`等库,它们提供...

    xml字符串转换为xml文档并解析。

    一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。

Global site tag (gtag.js) - Google Analytics