571

我有一些希望在 HTML 页面中呈现的 XML 文本。此文本包含一个 & 符号,我想在其实体表示中呈现它:&

如何在源 XML 中转义这个 & 符号?我试过&了,但这被解码为实际的 & 字符 ( &),这在 HTML 中是无效的

所以我想以这样一种方式对其进行转义,使其在&使用 XML 输出的网页中呈现。

4

10 回答 10

453

当您的 XML 包含&时,这将产生文本&

当您在 HTML 中使用它时,它将呈现为&.

于 2009-08-25T14:37:31.363 回答
207

根据XML 1.0 规范的 §2.4,您应该能够使用&.

我试过了 但这是不允许的。

你确定这不是一个不同的问题?XML 明确地将其定义为转义 & 符号的方式。

于 2009-08-25T14:13:57.690 回答
145

&字符本身是 XML 中的转义字符,因此解决方案是将其与 Unicode 十进制等效字符连接起来,&从而确保没有 XML 解析错误。也就是说,将字符替换&&

于 2011-02-09T00:38:27.240 回答
80

使用CDATA标签:

 <![CDATA[
   This is some text with ampersands & other funny characters. >>
 ]]>
于 2009-08-25T14:14:29.653 回答
49

&amp;应该可以正常工作。Wikipedia 有一个 XML 中预定义实体的列表

于 2009-08-25T14:14:19.403 回答
14

就我而言,我不得不将其更改为%26.

我需要&在 URL 中转义。所以&amp;没有为我工作。urlencode函数&变为%26. _ 这样,XML 和浏览器 URL 机制都不会抱怨 URL。

于 2013-10-25T13:45:39.757 回答
7

我已经尝试过&,但它没有用。根据Wim 10 Brink 的回答,我尝试了 &amp 并且成功了。

我的一位开发人员建议我使用 & 并且无论它可以渲染多少次,它都有效。

于 2013-06-20T17:14:07.680 回答
5

&amp;是在 XML 文档的大多数部分中表示 & 符号的方式。

如果您想在 HTML 中显示 XML,您需要首先创建正确编码的 XML(这涉及更改&&amp;),然后使用它来创建正确编码的 HTML(这涉及再次更改&&amp;)。这导致:

&amp;amp;

有关 XML 编码的更详尽解释,请参见:

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

于 2016-08-30T14:44:06.043 回答
4

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text>会成功的。

于 2011-03-01T16:23:00.127 回答
0

考虑一下您的 XML 是否如下所示。

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
  <Query>
</Employees>

您不能<>直接使用它,因为它会引发错误。在这种情况下,您可以使用&#60;&#62;它来代替它。

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES &#60;&#62; 'GCF'
  <Query>
</Employees>

14.1 如何在XML 中使用特殊字符有全部代码。

于 2016-09-17T03:40:00.197 回答