我是否需要在XML正文中替换双/单引号?

时间:2014-06-02 19:33:07

标签: xml

请在此处更正我的术语:

XML的5个字符替换是:

  • &放大器;放大器; (&)
  • &安培; LT; (<)
  • &安培; GT; (>)
  • &安培; QUOT; (")
  • &安培;者; (')

所有这些替换都需要在元素文本中进行吗?或者只属性文字? (术语修正?)

e.g。这是有效的XML吗?

<myelement>x && y</myelement>
<myelement>And I quote, "no"</myelement>
在此上下文中,

&gt;&lt;似乎显而易见,但我不清楚替换规则是否对整个XML文档是全局的,或者它们是否适用于不同的部分文档(例如,cdata部分应用不同的规则)。

假设:这是无效的XML:

<myelement field="no & allowed here"/>
<myelement field="no <> allowed here"/>

引号是明显的属性分隔符,&lt;&gt;是明显的元素文本分隔符。

1 个答案:

答案 0 :(得分:10)

在元素内容中,您只需要转义&<;你永远不需要逃避单引号或双引号,只有当它出现在序列>的一部分时才需要转义]]>(许多人无条件地替换它,因为这更简单)。

在属性内容中,您只需要转义&<以及'",具体取决于哪一个用作属性定界符。

&开头的实体无法在注释或CDATA部分或元素或属性名称中识别,因此特殊字符不得在这些上下文中进行转义。