转义 XML 中的双引号字符

Xml 中的双引号有转义字符吗? 我想写一个标记,比如:

<parameter name="Quote = " ">

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

printf("Quote = \" ");

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

172027 次浏览

试试这个:

&quot;

不,没有这样的转义字符,相反,您可以使用 &quot;或甚至 <![CDATA["]]>来表示 "字符。

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

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

XMLAPI 将自动为您处理这样的事情,使 很多更难出错。除非您自己编写 XMLAPI,否则很少需要担心这样的细节。

在 C + + 中,您可以使用 EscapeXML ATL API。

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

<parameter name='Quote = " '>

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

  1. 双引号(")转义为 &quot;
  2. 与符号(&)转义为 &amp;
  3. 单引号(')转义为 &apos;
  4. 小于(<)被转义为 &lt;
  5. greater than (>) is escaped to &gt;

You can try using the a backslash followed by a "u" and then the unicode value for the character, for example the unicode value of the double quote is

”-> U + 0022

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

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

This would produce a text in the TextView roughly something like this

“显示双引号”

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

新的,改进的答案,一个老的,经常问的问题..。

When to escape double quote in XML

双引号(")可能出现在 而不是逃跑:

  • In XML textual content:

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
    
  • In XML attributes delimited by single quotes ('):

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

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

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

Double quote (") must be escaped:

  • In XML attributes delimited by double quotes:

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

Bottom line

Double quote (") must be escaped as &quot; in XML only in very limited contexts.