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

AJM*_*AJM 505 html xml escaping ampersand

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

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

所以我想以这样的方式逃避它,它将&在使用XML输出的网页中呈现.

Wim*_*ink 410

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

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

  • 这如何回答这个问题? (6认同)

Joh*_*lla 191

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

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

你确定它不是一个不同的问题吗?XML明确地将其定义为逃避&符号的方法.

  • 这在发布时是完全合理的,但是对问题的更改(或可能是澄清)使其作为答案看起来毫无意义。一方面,引用的段落不再出现在问题中。 (4认同)

小智 127

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

  • 堆栈溢出太棒了。这是一篇近 11 年前的帖子,解决了我的问题。观看次数已超过 690,000 次。 (7认同)
  • 我更喜欢这个解决方案!也应该可以使用十六进制表示法:`&` (5认同)
  • @sijpkes因为此处的&符号告诉解析器以下字符用于表示另一个字符,在这种情况下将是一个&符号."&"在XML中并非"非法" - 它只是具有特殊意义.这意味着"在此之后所有字符都应该被翻译成其他字符".如果你有一个&符号,没有描述性字符和尾随分号,解析器就会混淆. (3认同)
  • 从逻辑上讲,为什么这会起作用?两个字符串都有一个&符号,包括末尾带有字符代码的那个...... (2认同)

scr*_*gar 64

CDATA标签?

 <![CDATA[
   This is some text with ampersands & other funny characters. >>
 ]]>
Run Code Online (Sandbox Code Playgroud)

  • 原始帖子从未明确表示使用和使用CDATA标签,CDATA标签不能用于属性值,仅用于标签的实际内容,因此我包含了'?'. (18认同)
  • 这可能是猜测; 虽然这是正确的.CDATA标记允许使用原始的&符号. (9认同)
  • 这是猜测而不是答案. (3认同)
  • 这正是我需要的答案,因为就我而言,我不确定 XML 中可能出现哪些字符,因此我需要转义该部分中的所有内容。 (2认同)

nik*_*org 44

&amp;应该工作得很好,维基百科有一个XML预定义实体列表.


小智 10

在我的情况下,我不得不改变它%26.

我需要&在URL中转义.所以&amp;没有为我工作.将进行urlencode函数更改&%26.这样,XML和浏览器URL机制都没有抱怨URL.

  • 是.请注意,OP是关于在XML中转义的.在URL中转义是一个不同的问题.当您拥有XML中的URL或URL中的XML片段时,真正的乐趣就开始了...... (6认同)

小智 5

我试过&,但它不起作用.根据Wim ten Brink的回答,我试过放大器并且它起作用了.

我的一位开发人员建议我使用& 无论有多少次渲染,它都能工作.


Ril*_*jor 5

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

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

&amp;amp;
Run Code Online (Sandbox Code Playgroud)

有关 XML 编码的更详尽说明,请参阅:

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