在XML中转义双引号字符

时间:2009-08-03 13:29:36

标签: xml escaping

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

<parameter name="Quote = " ">

但如果我把“,那就意味着字符串已经结束。我需要这样的东西(c ++):

printf("Quote = \" ");

在双引号之前是否要写一个字符来逃避它?

8 个答案:

答案 0 :(得分:146)

试试这个:

&quot;

答案 1 :(得分:108)

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

  1. 双引号(")已转义为&quot;
  2. &符号(&)已转义为&amp;
  3. 单引号(')已转义为&apos;
  4. 小于(<)已转义为&lt;
  5. 大于(>)已转义为&gt;

答案 2 :(得分:27)

在这种情况下,其他人已就如何处理特定的逃避问题做出了回答。

更广泛的答案不是试图自己做。使用XML API - 现有几乎所有现代编程平台都有很多可用的。

XML API会自动为您处理这样的事情,使 lot 更难出错。除非您自己编写XML API,否则您应该很少担心这样的细节。

答案 3 :(得分:7)

不存在转义字符,而是可以使用&quot;甚至<![CDATA["]]>来表示"字符。

答案 4 :(得分: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"/>
    

底线

双引号(")必须仅在非常有限的上下文中以XML格式&quot;进行转义。

答案 5 :(得分:4)

如果您只是需要快速尝试一下,这是一个快速而肮脏的解决方案。使用single quotes for the attribute value

<parameter name='Quote = " '>

答案 6 :(得分:2)

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

答案 7 :(得分:1)

您可以尝试使用反斜杠后跟&#34; u&#34;然后是字符的unicode值,例如双引号的unicode值是

&#34; - &GT; U + 0022

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

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

这会在TextView中生成大致类似于

的文本

&#34;显示双引号&#34;

您可以在www.unicode-table.com/en

找到大多数符号和字符的unicode