HTMLページにレンダリングしたいXMLテキストがあります。このテキストにはアンパサンドが含まれています。これをエンティティ表現で表示する必要があります:&
。
ソースXMLでこのアンパサンドをエスケープする方法を教えてください。私は&
を試しましたが、これは実際のアンパサンド文字(&
)としてデコードされます。これは HTMLでは無効です 。
そのため、XML出力を使用するWebページで&
としてレンダリングされるようにエスケープしたいと思います。
XMLに&
が含まれている場合、これはテキスト&
になります。
これをHTMLで使用すると、それは&
としてレンダリングされます。
XML 1.0仕様の§2.4 -に従って、&
を使うことができるはずです。
試してみましたしかしこれは許されません。
あなたはそれが別の問題ではないと確信していますか? XMLでは、これをアンパサンドをエスケープする方法として明示的に定義しています。
&
文字自体はXMLのエスケープ文字なので、解決策はそれと&
と同等のUnicode 10進数を連結することで、XMLの構文解析エラーが発生しないようにすることです。つまり、文字&
を&
に置き換えます。
CDATAタグ?
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
は問題なく動作するはずです。ウィキペディアには XMLの定義済みエンティティのリストがあります .
私の場合は%26
に変更しなければなりませんでした。
URLで&
をエスケープする必要がありました。だから&
は私のためにうまくいきませんでした。 urlencode 関数は&
を%26
に変更します。このように、XMLもブラウザURLメカニズムもURLについて不満を述べませんでした。
試してみましたがうまくいきませんでした。 Wim ten Brinkの答えに基づいて&amp; ampを試したところ、うまくいった。
私の仲間の開発者の一人が&#x26;を使うように勧めました。そしてそれは何回レンダリングされても構わない。
&
は、XMLドキュメントのほとんどのセクションでアンパサンドを表す方法です。
XMLをHTML内に表示したい場合は、まず適切にエンコードされたXML(&
を&
に変更することを含む)を作成し、thenを使用する必要があります適切にエンコードされたHTMLを作成するには(&
を&
に再度変更する必要があります)。その結果:
&amp;
XMLエンコードの詳細については、以下を参照してください。
ユニコード\u0026
を使ってはどうですか?私のAndroid XMLファイルで私のために働きます。問題が発生した場合は、誰かが私に知らせてください。
<xsl:text disable-output-escaping="yes">& </xsl:text>
がうまくいくでしょう。
XMLが以下のようになっているかどうかを検討してください。
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
<Query>
</Employees>
エラーが発生するため、<>
を直接使用することはできません。その場合は、代わりに<>
を使用できます。
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES <> 'GCF'
<Query>
</Employees>
ここをクリック すべてのコードを見るために。
関連する問題は、そのようなコンテンツにアンパサンドが含まれている場合にXML要素コンテンツをエンコードする方法です-XMLがGETアクションで送信されたURIの一部である場合。 (このようなAPIの知恵は別として、今日対処しなければなりませんでした。)上記のすべてを試しましたが、実際に機能したのは%26amp;
%26
だけでした。アンパサンドのXMLエンコードの最初の文字をURLエンコードします。 URIのXML部分がXMLドキュメントサーバー側にロードされていたため、amp;
に続く%26
が必要でした。したがって、この楽しいシナリオでは、両方のエンコード方法を一緒にホチキス止めする必要がありました。