如何在XML中转义&号,使它们在HTML中呈现为实体?

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

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

因此,我希望以这样一种方式对它进行转义,使它在使用XML输出的网页中呈现为&

798228 次浏览

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

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

你确定这不是别的问题吗?XML显式地将此定义为转义&号的方法。

&应该可以正常工作。# EYZ1。

使用CDATA标签:

 <![CDATA[
This is some text with ampersands & other funny characters. >>
]]>

当您的XML包含&amp;amp;时,这将导致文本&amp;

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

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

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text>就可以了。

我试过了,但没有用。基于听听布林克的回答,我尝试&amp,它工作。

我的一个开发伙伴建议我使用&不管它被渲染了多少次,这都是有效的。

在我的情况下,我必须把它改为%26

我需要在URL中转义&。所以EYZ1并不适合我。 urlencode函数将&更改为%26。这样,XML和浏览器URL机制都不会抱怨URL

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

如果您想在HTML中显示XML,首先需要创建正确编码的XML(包括将&更改为&amp;),然后使用然后创建正确编码的HTML(再次涉及将&更改为&amp;)。结果是:

&amp;amp;

有关XML编码的更详细说明,请参见:

在XML文档中需要转义哪些字符?< / >

考虑一下您的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中特殊字符的使用方法有所有的代码。