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

在XML中转义双引号字符

  •  84
  • ufukgun  · 技术社区  · 16 年前

    XML中的双引号是否有转义符?我想写一个标签,比如:

    <parameter name="Quote = " ">
    

    但如果我把“,那就意味着绳子已经结束了。我需要像这样的东西(C++):

    printf("Quote = \" ");
    

    在双引号前是否有字符要写入以转义它?

    8 回复  |  直到 6 年前
        1
  •  141
  •   Andrew Hare    16 年前

    试试这个:

    &quot;
    
        2
  •  106
  •   danjuggler    8 年前

    以下是需要在XML中转义的常见字符,从双引号开始:

    1. 双引号 " )被逃到 &quot;
    2. 阿姆斯潘 & 逃到 &amp;
    3. 单引号(单引号) ' )被逃到 &apos;
    4. 小于( < 逃到 &lt;
    5. 大于( > 逃到 &gt;
        3
  •  27
  •   Jon Skeet    16 年前

    在这种情况下,其他人已经回答了如何处理特定的转义。

    一个更广泛的答案是不要试图自己去做。使用一个XML API——几乎所有的现代编程平台都有足够的可用性。

    XML API将自动为您处理类似的事情,使它成为 许多 更难出错。除非您自己编写一个XML API,否则您应该很少需要担心这样的细节。

        4
  •  7
  •   Matt Howells    16 年前

    不,没有这样的转义符,您可以使用 &quot; 甚至 <![CDATA["]]> 代表 " 性格。

        5
  •  7
  •   kjhughes    7 年前

    新的,改进的回答一个老的,经常被问到的问题…

    在XML中何时转义双引号

    双引号 " 可能出现 没有逃跑 :

    • 在XML文本内容中:

      <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
      
    • 在用单引号分隔的XML属性中( ' ):

      <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>
      

      注: 切换到单引号( )也不需要转义:

      <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>
      

    双引号 ) 必须逃脱 :

    • 在用双引号分隔的XML属性中:

      <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>
      

    底线

    双引号 )必须作为 &quot; 仅在非常有限的上下文中使用XML。

        6
  •  4
  •   Community CDub    8 年前

    如果你只是需要快速尝试一些东西,这里有一个快速而肮脏的解决方案。使用 single quotes for the attribute value :

    <parameter name='Quote = " '>
    
        7
  •  2
  •   Neven    12 年前

    在C++中,可以使用HEXEXMLATL API。这是处理特殊字符的正确方法…

        8
  •  1
  •   EAM    6 年前

    您可以尝试使用反斜杠后跟“U”,然后使用字符的Unicode值,例如双引号的Unicode值是

    “-gt;u + 0022

    因此,如果您在Android中将它设置为XML文本的一部分,它看起来会像这样,

    <TextView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:text=" \u0022 Showing double quotes \u0022 "/>
    

    这将在textView中生成大致类似于以下内容的文本

    “显示双引号”

    您可以在这里找到大多数符号和字符的Unicode,www.unicode-table.com/en