为了账号安全,请及时绑定邮箱和手机立即绑定

我需要在XML文档中转义哪些字符?

/ 猿问

我需要在XML文档中转义哪些字符?

绝地无双 2019-05-28 18:05:30

我需要在XML文档中转义哪些字符?

必须在XML文档中转义哪些字符,或者在哪里可以找到这样的列表?



查看完整描述

4 回答

?
吃鸡游戏

如果您使用适当的类或库,他们将为您进行转义。许多XML问题都是由字符串连接引起的。

XML转义字符

只有五个:

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

转义字符取决于特殊字符的使用位置。

可以在W3C标记验证服务中验证这些示例。

文本

在安全的方式是逃避文本所有5个字符,然而,三个字符"'>无需在文本转义:

<?xml version="1.0"?><valid>"'></valid>

属性

安全的方法是转义属性中的所有五个字符,但是,>字符不需要在属性中转义:

<?xml version="1.0"?><valid attribute=">"/>

'如果引号为"以下内容,则无需在属性中转义该字符:

<?xml version="1.0"?><valid attribute="'"/>

同样,"如果引号为':则不需要在属性中进行转义:

<?xml version="1.0"?><valid attribute='"'/>

评论

不得在评论中转义所有5个特殊字符:

<?xml version="1.0"?><valid><!-- "'<>& --></valid>

CDATA

不得CDATA部分中转义所有5个特殊字符:

<?xml version="1.0"?><valid><![CDATA["'<>&]]></valid>

处理说明

不得在XML处理指令中转义所有5个特殊字符:

<?xml version="1.0"?><?process <"'&> ?><valid/>

XML与HTML

HTML有自己的一组转义码,涵盖了更多的字符。


查看完整回答
反对 回复 2019-05-28
?
MM们

也许这会有所帮助:

XML和HTML字符实体引用列表

在SGML,HTML和XML文档中,称为字符数据和属性值的逻辑结构由字符序列组成,其中每个字符可以直接显示(表示自身),或者可以由称为字符引用的一系列字符表示,其中有两种类型:数字字符引用和字符实体引用。本文列出了在HTML和XML文档中有效的字符实体引用。

该文章列出了以下五个预定义的XML实体:

quot  "
amp   &
apos  '
lt    <
gt    >


查看完整回答
反对 回复 2019-05-28
?
翻翻过去那场雪

根据万维网联盟(w3C)的规范,除了用作标记分隔符或用于注释,处理指令或CDATA部分之外,有5个字符在XML文档中不得以其字面形式出现。。在所有其他情况下,必须使用相应的实体或根据下表的数字引用替换这些字符:

Original CharacterXML entity replacementXML numeric replacement
<                              &lt;                                    &#60;                                    
>                              &gt;                                   &#62;                                    
"                               &quot;                               &#34;                                    
&                              &amp;                               &#38;                                    
'                               &apos;                               &#39;                                    

注意,上述实体也可以在HTML中使用,除了,这是在XHTML 1.0中引入的,并未在HTML 4中声明。出于这个原因,为了确保复古兼容性,XHTML规范建议使用&#39; 代替。


查看完整回答
反对 回复 2019-05-28
?
狐的传说

转义字符对于标记和属性是不同的。

对于标签:

 < &lt;
 > &gt; (only for compatibility, read below)
 & &amp;

对于属性:

" &quot;
' &apos;

http://www.w3.org/TR/2008/REC-xml-20081126/#syntax

&符号(&)和左尖括号(<)不得以其文字形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串“&amp;”和“&lt;”进行转义。右尖括号(>)可以使用字符串“&gt;”表示,并且为了兼容性,当它出现在字符串“]]>”内容中时,必须使用“&gt;”或字符引用进行转义,当该字符串未标记CDATA部分的结尾时。

为了允许属性值包含单引号和双引号,撇号或单引号字符(')可以表示为“'”,而双引号字符(“)表示为”“。”。


查看完整回答
反对 回复 2019-05-28

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信