2011-08-09 21 views
1

XML文書に要素を書き込むためにLINQ to XMLを使用しています。私が午前問題は、私はXML要素に書き込みをしようとする文字列は「文字のような&、<、>とを有することである。xmlに特殊文字を書く#

私は次のコードを使用してXMLに書き込むときは、

XElement Config= new XElement("Student", new XElement("ID", "><&\"")); 

は、私は、XML文書に書き込まれているこれらの特殊文字を取得いけない。その代わり、私は&lt; for < and &gt; for >のようなものを得ることができます。XMLへの書き込み中に、私はこれらの文字をエスケープするにはどうすればよい?

おかげ

+0

私はあなたにそれがすでにしていることをするように求めていますか? –

+0

'<'は '<' –

+0

のエスケープされたバージョンです。次に、文字を Joe

答えて

4

X文書自体がエスケープします。

<Student><ID>><&"</ID></Student>は整形式ではありません。 XDocumentを生成

整形式のバージョンは、次のとおりです。あなたはこのコードを使用することができます

<Student> 
    <ID>&gt;&lt;&amp;"</ID> 
</Student> 

は(CDATAを使用しています):

XElement Config = new XElement("Student", new XElement("ID", new XCData("><&\""))); 

出力:

<Student> 
    <ID><![CDATA[><&"]]></ID> 
</Student> 
+0

私は二重引用符で正確にxmlに出力します。最後のように、私は文字を参照したい<&xmlの – Joe

+0

@ジョー、私はCDATAを使用して私の答えを更新しました。 –

+1

@Kirill Polishchuk - 永続性のためにできることがあれば、私はあなたに+2を与えるでしょう。 –

1

もし何達成しようとしているのは次のようなファイルです:

<Student> 
    <ID>><&\</ID> 
</Student> 

あなたは間違っている。これは整形式のXMLではなく、パーサーがそれを扱うことはありません。

1

エスケープ文字を使用して出力しない場合は、StringBuilderまたはStreamWriterを使用します。

実際、誰かのXML処理を壊そうとしない限り、実際には何の指摘もないので、XMLリーダーを解析することのできない悪質なXMLを生成しようとしています。