【问题标题】:Do I need to replace double/single quote in XML body text?我是否需要替换 XML 正文中的双引号/单引号?
【发布时间】:2014-06-02 19:33:06
【问题描述】:

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

XML 的 5 个字符替换是:

  • & (&)
  • < (
  • > ( > )
  • " (")
  • ’ (')

所有这些替换都需要在元素文本中发生吗?还是只有属性文本? (术语更正?)

例如这是有效的 XML 吗?

<myelement>x && y</myelement>
<myelement>And I quote, "no"</myelement>

&amp;gt;&amp;lt; 在这种情况下似乎很明显可以替换,但我不清楚替换规则是否适用于整个 XML 文档,或者它们是否适用于文档的不同部分(例如, cdata 部分应用不同的规则)。

假设:这是无效的 XML:

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

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

【问题讨论】:

    标签: xml


    【解决方案1】:

    在元素内容中只需要转义&amp;&lt;;您永远不需要转义单引号或双引号,并且仅当它作为序列 ]]&gt; 的一部分出现时才需要转义 &gt;(许多人无条件替换它,因为这样更简单)。

    在属性内容中,您只需对&amp;&lt; 以及'" 进行转义,具体取决于哪个用作属性分隔符。

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

    【讨论】:

    • 你也可以用html & ’ ” < >
    • 问题是关于 XML,而不是 HTML。
    • 这是完全相同的问题这是相同的基础。这是 xml 正文响应。 &xxx;不是特定于 xml 的,这个问题在数据解析器中完全相同。
    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2018-11-18
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多