どのように私は文字をエスケープからXElement.Saveを停止していますか?

StackOverflow https://stackoverflow.com/questions/2564396

  •  23-09-2019
  •  | 
  •  

質問

私は情報を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&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出力を処理しているコードを修正お勧めします。

他のヒント

この行動の欠如は許されない。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top