3

メソッドを使用してXElement情報を入力し、xml ファイルに書き込みますXElement.Save(path)。ある時点で、結果ファイルの特定の文字がエスケープされます。たとえば>>.

>パスワードの一部として文字を含む情報を XML に格納する必要があるため、この動作は受け入れられません。これらをエスケープせずに、XElement オブジェクトの「生の」コンテンツを XML に書き込むにはどうすればよいですか?

4

2 に答える 2

3

この動作の欠如は容認できません。

エスケープされていないスタンドアロン>無効な XMLです。
XElement は、有効な XML を生成するように設計されています。

要素のエスケープされていないコンテンツValueを取得する場合は、プロパティを使用します。

于 2010-04-02T00:10:50.910 に答える
2

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&gt;Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace("&gt;", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);

仕様に準拠した XML パーサーはすべて をサポートする必要があることを考慮して&gt;、プログラムの XML 出力を処理しているコードを修正することを強くお勧めします。

于 2010-04-02T00:32:24.673 に答える