1

次のような山かっこを含む文字列があります。

<element1>my text here</element1>

コンソールや dataGridView などに書き込むと、文字列は文字通り次のようになります。ただし、これを XML ドキュメントの一部として記述しようとしています。

書き込まれたxmlファイルで、上記が次のように表示されることを除いて、すべて問題ありません。

&lt;element1&gt;my text here&lt;/element1&gt;

これをコードではなくリテラルテキストとして書き出すにはどうすればよいですか?

ありがとう!

-アディーナ

4

5 に答える 5

4

すべての要素をエスケープせずに文字列として保持する場合は、CDATA ブロックを使用します。

<xml><![CDATA[<element1>my text here</element1>]]></xml>
于 2008-12-07T14:48:20.257 に答える
2

この文字列は、コンソールやdataGridViewなどに書き込むと、文字通り次のようになります。

XMLドキュメントの文字列値を直接操作しないでください。

私はソフトウェア開発について多くの絶対的な発言をしませんが、それはほとんど常に真実です。XMLの経験が豊富でない場合は、間違いなく真実です。XMLを初めて使用する人が抱える問題の25%以上は、これが原因だと思います。

XMLをXmlDocumentにロードし、それを含む要素を見つけて、要素のInnerTextプロパティを書き出すと、文字列は正しく表示されます。DOMは、テキストをXMLに適切にラウンドトリップし、テキストのマークアップがXMLのマークアップに干渉しないようにエンコードします。あなたはあれが欲しい。

私が観察したもう1つのことは、少なくとも90%の確率で、CDATAを使用するという提案は技術的には正しいのですが、他のすべての点で間違っています。CDATAの使用は、最後の手段です。

于 2008-12-08T19:31:34.193 に答える
2

最終的な XML ファイルをどのようなものにしたいですか?

次のように出力すると、XML パーサーは "<element1>" をコンテンツではなく構造の一部として解釈します。

<container><element1>my text here</element1></container>

XML を文字列として記述することに関しては、これは悪い考えです。エスケープには理由があります。XML 仕様を詳細に理解していない限り、間違いを犯すことはほとんど保証されています。

于 2008-12-07T16:30:22.747 に答える
0

これは、アプリケーションが実際の XML 要素ではなくコンテンツであると見なす必要があるため、HTML エンコード形式として記述されているため、コンテンツであるかのようにエスケープされます。

XmlWriter クラスを使用してみましたか?

于 2008-12-07T14:32:39.523 に答える
-1

うーん。

そのため、XMLSerializer を使用する代わりに (これはすばらしい方法だと思いました)、すべての要素の文字列を構築し、それらを通常のテキスト ファイルとして書き出すことにしたと思います。それは機能しているようで、十分に簡単です。他にもいくつかのユニークな/奇妙なことがありましたが、この方法を使用すると、すべてがはるかに簡単になります。:)

-アディーナ

于 2008-12-07T15:28:07.850 に答える