web-dev-qa-db-ja.com

XMLの二重引用符をエスケープします

Xmlに二重引用符のエスケープ文字はありますか?私は次のようなタグを書きたいです:

<parameter name="Quote = " ">

しかし、「」と入力すると、文字列が終了したことを意味します。次のようなものが必要です(c ++):

printf("Quote = \" ");

二重引用符の前に、エスケープする文字を記述しますか?

89
ufukgun

これを試して:

&quot;
149
Andrew Hare

以下は、二重引用符で始まるXMLでエスケープする必要がある一般的な文字です。

  1. 二重引用符(")は&quot;にエスケープされます
  2. アンパサンド(&)は&amp;にエスケープされます
  3. 単一引用符(')は&apos;にエスケープされます
  4. より小さい(<)は&lt;にエスケープされます
  5. より大きい(>)は&gt;にエスケープされます
109
Alex Muriithi

他の人は、この場合の特定のエスケープの処理方法に関して回答しています。

より広い答えは、自分でやろうとしないことです。 XML APIを使用してください-存在するほぼすべての最新のプログラミングプラットフォームで利用できるものがたくさんあります。

XML APIは、このようなことを自動的に処理し、lotを間違えにくくします。 XML APIを自分で作成しているのでない限り、このような詳細について心配する必要はほとんどありません。

27
Jon Skeet

古い、よくある質問に対する新しい改善された回答...

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;としてエスケープする必要があります。

8
kjhughes

エスケープ文字自体はありません。代わりに、&quot;または<![CDATA["]]>を使用して"文字を表すことができます。

7
Matt Howells

何かをすぐに試す必要がある場合は、こちらが迅速で汚れたソリューションです。 属性値の単一引用符 を使用します:

<parameter name='Quote = " '>
4
Brad Cupit

C++では、EscapeXML ATL APIを使用できます。これは特殊な文字を処理する正しい方法です...

2
Neven

バックスラッシュに続けて「u」を使用してから、文字のUnicode値を使用してみてください。たとえば、二重引用符のUnicode値は

"-> U + 0022

したがって、AndroidのXMLのテキストの一部として設定すると、次のようになります。

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

これにより、TextViewに次のようなテキストが生成されます。

「二重引用符の表示」

ほとんどの記号と文字のユニコードは、www.unicode-table.com/enで見つけることができます。

1
E-max