1

次の文字列を XML ファイルに保存します。

<text><![CDATA[<p>what is my pet name</p>]]></text>

保存すると、次のようになります。

<text>&lt;![CDATA[&lt;p&gt;what is my pet name&lt;/p&gt;]]&gt;</text>

File.WriteAllText()、メソッドを試しXmlDocument.Save()ましたが、適切な応答が得られませんでした。

基本的に、XML の開始タグと終了タグ以外のすべての場所は、<に置き換えられ&lt;>に置き換えられ&gt;ます。

4

3 に答える 3

2

起こっていることは、XML パーサーが文字列をエンコードしていることです。後で文字列にアクセスしようとすると、その時点で再度デコードできます。

私が提案するのは、テキストを新しい 'XmlDocument' にロードしてからXmlDocument.LoadXml(string s)、それを現在のドキュメントにインポートするか、エンコードしたままにすることです。

XML パーサーを使用すると同時に手動でテキストを追加しようとしないでください。

于 2012-08-08T20:14:34.803 に答える
1

CDATA を手動で追加すると、XML 書き込みメカニズムは CDATA をテキスト コンテンツとして扱うため、CDATA を正しくエスケープすると思います。代わりに、内容だけを含む CDATA セクションを明示的に追加します。

古い XML API (System.XML) を使用している場合は、次のメソッドを使用して CDATA セクションを作成します。http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection 次に、リンクの例と同じように、ノードを要素に追加します。

于 2012-08-08T20:12:09.160 に答える
0

XML は正しく記述されています。

C# が "if" や "string" などの単語を予約しているように、XML にはコマンド用に予約されている特殊文字があります。

XML は、保存のために文字列をエンコードしています。必要なことは、文字列を取得するときに、同様のデコード プロセスを実行することです。

これを使って:HttpServerUtility.HtmlDecode(encodedString)

参考: Webサービスから返されたXMLをデコード(<と>を<と>に置き換え)?

于 2012-08-08T20:24:07.063 に答える