-1

C# で次のような文字列があります。

string sxml="<id>xpto</id>"

XLinqを使用してxmlファイルを保存したい:

XElement cursosXML = new XElement("MenuItem", new XCData(sxml));
cursosXML.save("C:\\xpto.xml")

xml ファイルを読み取ると、次のように表示されます。

<MenuItem><![CDATA[<id>xpto</id>]]></MenuItem>

でも欲しくない<![CDATA[

どうすればこの結果を得ることができますか?

<MenuItem>&lt;xpto&gt;3&lt;</MenuItem>
4

1 に答える 1

1

要素に文字列を追加する方法は次のとおりです

        XElement sxml = XElement.Parse("<id>xpto</id>");
        XElement cursosXML = new XElement("MenuItem", sxml);
        cursosXML.Save("C:\\xpto.xml");



以下は、あなたが抱えている問題の説明です。参考までにここだけです

<id>xpto</id>は XML 要素ですが、リテラル文字列であるかのように現在の要素に追加しています。これを行うと、コンピューターはメイン要素に新しい子要素を追加しているとは見なさないため、エスケープします(後で説明します)

私が投稿したコードはXElement.Parse(string)、シリアル化された xml 文字列を取得し、そこXElementから有効な文字列を生成しようとします。


何が起こっているかというと、これ&lt;は のエスケープ シーケンス<あり&gt;、 のエスケープ シーケンスです>

<XML パーサーがとをエスケープする理由>は、これらの文字には特別な意味があり、それらを XML に含めると XML の性質が変わるからです。

\nこれは、改行文字のエスケープ シーケンスと、改行文字のエスケープ シーケンスの方法に\\似ています。\



于 2012-11-08T16:17:05.163 に答える