Answers:
如果您使用适当的类或库,它们将为您进行转义。许多XML问题是由字符串串联引起的。
只有五个:
" "
' '
< <
> >
& &
转义字符取决于使用特殊字符的位置。
可以在W3C标记验证服务处验证示例。
安全的方法是转义文本中的所有五个字符。然而,三个字符"
,'
而>
不用文字进行转义:
<?xml version="1.0"?>
<valid>"'></valid>
安全的方法是转义属性中的所有五个字符。但是,>
无需在属性中对字符进行转义:
<?xml version="1.0"?>
<valid attribute=">"/>
'
如果引号是"
:,则不必在属性中对字符进行转义:
<?xml version="1.0"?>
<valid attribute="'"/>
同样,"
如果引号是'
:,则不必在属性中转义:
<?xml version="1.0"?>
<valid attribute='"'/>
所有五个特殊字符均不得在注释中转义:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
所有五个特殊字符都不能在CDATA部分中转义:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
XML处理指令中不得对所有五个特殊字符进行转义:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML有其自己的转义码集,可覆盖更多字符。
"
将更改为&quot;
也许这会有所帮助:
在SGML,HTML和XML文档中,称为字符数据和属性值的逻辑结构由字符序列组成,其中每个字符都可以直接表示(代表自己),也可以由一系列称为字符引用的字符表示,其中有两种类型:数字字符引用和字符实体引用。本文列出了在HTML和XML文档中有效的字符实体引用。
该文章列出了以下五个预定义的XML实体:
quot "
amp &
apos '
lt <
gt >
根据万维网联盟(w3C)的规范,除了用作标记定界符或用作注释定界符或在注释,处理指令或CDATA部分中使用之外,XML文档中不得有5个字符以其原义形式出现。。在所有其他情况下,必须根据下表使用相应的实体或数字引用来替换这些字符:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
注意,上述实体也可以在HTML中使用,除了’。,它是随XHTML 1.0一起引入的,而未在HTML 4中声明。因此,为了确保兼容性,XHTML规范建议使用&#39;。代替。
>
如果@ShaunMcCance ]]
在内容中紧随其后,则必须转义,除非打算将其作为]]>
指示CDATA节结尾的定界符的一部分。
标签和属性的转义字符不同。
对于标签:
< <
> > (only for compatibility, read below)
& &
对于属性:
" "
' '
从角色数据和标记:
除用于标记分隔符时,或在注释,处理指令或CDATA节中,“&”字符(&)和左尖括号(<)均不得以其文字形式出现。如果在其他地方需要它们,则必须使用数字字符引用或分别使用字符串“&amp;”和“&lt;”对其进行转义。右尖括号(>)可以用字符串“&gt;”表示,并且为了兼容起见,在内容中出现在字符串“]]>”中时,必须使用“&gt;”或字符引用对其进行转义,当该字符串未标记CDATA节的结尾时。
为了允许属性值同时包含单引号和双引号,撇号或单引号字符(')可以表示为“’”,而双引号字符(”)可以表示为“’”。”。
对旧的常见问题的新的简化答案...
]]>
必须以进行转义]]>
。实现这个的最简单的方法可能是永远逃脱>
的>
。
]]>
但选择将其委托给esoterica,而不是建议>
始终将其转义(如您所知,它不一定要转义)。我的目标是使XML转义规则易于记忆 并且 100%准确。
如果只将<
和&
用作字符数据而不是标记,则必须对其进行转义:
<company>AT&T</company>