メソッドを使用してXElement
情報を入力し、xml ファイルに書き込みますXElement.Save(path)
。ある時点で、結果ファイルの特定の文字がエスケープされます。たとえば>
、>
.
>
パスワードの一部として文字を含む情報を XML に格納する必要があるため、この動作は受け入れられません。これらをエスケープせずに、XElement オブジェクトの「生の」コンテンツを XML に書き込むにはどうすればよいですか?
この動作の欠如は容認できません。
エスケープされていないスタンドアロン>
は無効な XMLです。
XElement は、有効な XML を生成するように設計されています。
要素のエスケープされていないコンテンツValue
を取得する場合は、プロパティを使用します。
XML 仕様では、通常、>
エスケープされていないように見えることが許可されています。XDocument
エスケープが厳密に必要とされていない場所に表示されますが、安全にプレイしてエスケープします。
生成された XML を置換できます。http://www.w3.org/TR/REC-xml#syntaxに従って注意してください。これにより]]>
シーケンスが発生する場合、XML は XML 仕様に準拠しません。さらに、XDocument.Parse
実際には、「']]>' is not allowed in character data.」というエラーでそのような 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 出力を処理しているコードを修正することを強くお勧めします。