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

Dav*_*rks 9 xml

如果关闭,请在此处更正我的术语:

XML的5个字符替换是:

  • &安培; (&)
  • < (<)
  • > (>)
  • " (")
  • 者; (')

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

例如,这是有效的XML吗?

<myelement>x && y</myelement>
<myelement>And I quote, "no"</myelement>
Run Code Online (Sandbox Code Playgroud)

&gt;并且&lt;看起来很明显在这方面代替,但我不清楚,如果替换规则是全球整个XML文档,或者如果他们不同的适用于文档的不同部分(例如,CDATA部分适用不同的规则).

假设:这是无效的XML:

<myelement field="no & allowed here"/>
<myelement field="no <> allowed here"/>
Run Code Online (Sandbox Code Playgroud)

引号是明显的属性分隔符,<>是元素文本的明显分隔符.

Mic*_*Kay 14

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

在属性内容你只需要逃避&<,要么'或者",这取决于哪一个被用作属性定界符.

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