どのように私は文字をエスケープからXElement.Saveを停止していますか?
質問
私は情報をXElement
を移入し、XElement.Save(path)
メソッドを使用してXMLファイルにそれを書いています。ある時点で、結果のファイル内の特定の文字がエスケープされている - 例えば、>
は>
になります。
>
文字を含んでいるXMLに情報を格納する必要があるため、この動作は、受け入れられません。どのように私はこれらをエスケープせずにXMLへの私のXElementオブジェクトの「生のコンテンツを書き込むことができますか?
解決
XMLの仕様は通常>
がエスケープされていない表示されるようにできます。 XDocument
が安全なそれを再生し、それがエスケープは必須ではありません場所に表示されますが、それをエスケープします。
あなたは、生成されたXMLに置き換えを行うことができます。 http://www.w3.org/TR/REC-xml#syntaxあたりに注意してくださいに、任意の]]>
配列中のこの結果ならば、XMLは、XMLの仕様に準拠しています。また、XDocument.Parse
が実際にエラーが発生して、このようなXMLを拒否します「『]]>』の文字データで許可されていません。」。
XDocument doc = XDocument.Parse("<test>Test>Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace(">", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);
は任意の仕様に準拠するXMLパーサが>
をサポートしなければならないことを考慮して、私は非常にあなたのプログラムのXML出力を処理しているコードを修正お勧めします。
他のヒント
この行動の欠如は許されない。
Aスタンドアロンエスケープ>
の無効なXML のです。
XElementのは有効なXMLを生成するように設計されています。
あなたがエスケープを取得したい場合は、のコンテンツの要素の、Value
プロパティを使用します。
所属していません StackOverflow