System.Xml.XmlWriterを使用してXML要素にInnerTextプロパティを書き込む際にキャリッジリターンを避けます

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

  •  25-09-2019
  •  | 
  •  

質問

私は、.NETでXmlDocumentオブジェクトを保存するためのXmlWriterを使用しています。しかし、InnerTextプロパティを持つすべての要素は、周囲のキャリッジリターン文字で書かれています。

私は、それらの文字の書き込みを避けるためにXmlWriterSettingsを使用してみましたが、まだ運ます。

ここでは、使用されるコードの一部である

        XmlDocument outXml = new XmlDocument();
        outXml.AppendChild .......
        XmlWriterSettings sets = new XmlWriterSettings();
        sets.Encoding = encoding;
        sets.Indent = true;
        XmlWriter xwriter = XmlWriter.Create(file, sets);
        outXml.Save(xwriter);
        xwriter.Close();

XML出力は次のようです

  <String Id="msierrXmlFileFailedSave" Overridable="yes">
    Fehler beim Speichern der Einstellungen-Datei.
  </String>

必要なXML出力は次のようにする必要があります

  <String Id="msierrXmlFileFailedSave" Overridable="yes">Fehler beim Speichern der Einstellungen-Datei.</String>

要素の中にあるものをキャリッジリターンの書き込みを回避する方法はありますか?

PD:私はこの問題について逆質問を見ましたが、解決策はありませんこの場合には適用されません。

事前に感謝します。

Allan.c

役に立ちましたか?

解決

あなたは XmlDocument.PreserveWhitespaceを設定することになるでしょう[保存]を呼び出す前にのプロパティ。別のオプションではなく、要素のテキストの内容を正確に保存する必要が内部テキストのCDATAセクションを使用することです。

ドキュメントから:

  

のPreserveWhitespaceは前に真の場合   負荷またはLoadXmlと呼ばれ、ホワイトスペース   ノードが保持されます。それ以外の場合は、もし   このプロパティは、重要な虚偽であります   ホワイトスペースに保存され、ホワイトスペース   ありません。

     

のPreserveWhitespaceは前に真の場合   保存はで、ホワイトスペースと呼ばれています   文書が出力に保存されます。   そうでない場合は、このプロパティがfalseの場合、   XmlDocumentの自動インデント出力ます。

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