代码之家  ›  专栏  ›  技术社区  ›  AJM

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

  •  471
  • AJM  · 技术社区  · 16 年前

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

    如何在源XML中转义这个符号?我试过 &安培; ,但这被解码为实际的符号和字符( & ) invalid in HTML .

    所以我想以这样一种方式逃离它,它将被呈现为 &安培; 在使用XML输出的网页中。

    12 回复  |  直到 7 年前
        1
  •  376
  •   CodeCaster    9 年前

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

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

        2
  •  186
  •   John Feminella    7 年前

    根据 §2.4 of the XML 1.0 spec ,您应该能够使用 & .

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

    你确定这不是别的问题吗?XML明确地将其定义为转义和号的方法。

        3
  •  115
  •   Martin Schneider    7 年前

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

        4
  •  62
  •   scragar    16 年前

    CDATA标签?

         <![CDATA[
           This is some text with ampersands & other funny characters. >>
         ]]>
    
        5
  •  41
  •   nikc.org    16 年前

    &amp; 应该工作得很好,维基百科有一个 List of predefined entities in XML .

        6
  •  10
  •   Peter Mortensen icecrime    8 年前

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

    我需要逃跑 & 在URL中。所以 &amp; 不适合我。 这个 乌伦码 功能变化 & % 26 . 这样,XML和浏览器URL机制都不会抱怨URL。

        7
  •  5
  •   Peter Mortensen icecrime    8 年前

    我试过了,但没用。基于WimTenBrink的答案,我尝试了一个有效的方法。

    我的一位同事建议我使用&x26;,无论渲染多少次,这都有效。

        8
  •  3
  •   Community CDub    8 年前

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

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

    &amp;amp;
    

    有关XML编码的更详细解释,请参阅:

    What characters do I need to escape in XML documents?

        9
  •  3
  •   SMBiggs    8 年前

    用Unicode怎么样 \u0026 ?适用于我的Android XML文件。如果出现问题,有人告诉我。

        10
  •  2
  •   Isaac Truett    14 年前

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

        11
  •  0
  •   StackOverflowUser    8 年前

    一个相关的问题是,当XML元素内容包含一个符号时,如何对XML元素内容进行编码——如果XML是用get操作提交的URI的一部分。(撇开这种API的智慧不谈——这是我今天必须处理的事情。)我尝试了上面提到的每一件事,而真正起作用的是 %26amp; 这个 %26 需要对XML编码中的第一个字符进行url编码,以实现与号的合并。这个 amp; 跟随 % 26 需要,因为正在将URI的XML部分加载到XML文档服务器端。所以在这个有趣的场景中,有必要将两种编码方法结合在一起。

        12
  •  0
  •   Peter Mortensen icecrime    8 年前

    请考虑您的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>
    

    Click here 查看所有代码。