2011-12-21 9 views
2

を使用してフォーマットしたXMLを保持私は私が私の現在の書式と私「のXmlDocumentを」保存する方法XMLは常にXmlDocument

で動作するようにXmlDocumentオブジェクトを使用していますか?

現在のフォーマット:

<?xml version="1.0" encoding="utf-8"?> 
<root> 

    <element></element> 

</root> 

コード: XmlDocument class is removing formatting, c#, .NET

受け入れ答えは、現実には代わりに、すべての空白を削除するのPreserveWhitespace =真、次のとおりです。同様のトピックがあり

   XmlDocument testDoc = new XmlDocument(); 
       testDoc.Load(@"C:\Test.xml"); 

       **(do reading/writing using only XmlDocument methods)** 

       testDoc.Save(@"C:\Test.xml"); 

それらを保存する。

例:

コード:

XmlDocument testDoc = new XmlDocument(); 
    testDoc.Load(@"C:\Test.xml"); 
    testDoc.PreserveWhitespace = true; 
    testDoc.Save(@"C:\Test.xml"); 

結果:

<?xml version="1.0" encoding="utf-8"?><root><element></element></root> 
+0

PreserveWhiteSpace = true、実際にはすべての空白を削除するのではなく、空白を削除します。本当ですか? MSDNによると、LoadまたはLoadXmlが呼び出される前にPreserveWhitespaceがtrueの場合、空白のノードは保存されます。そうでなければ、このプロパティがfalseの場合、大きな空白が残っていて、空白はありません。 ' –

+0

はい、出力を今すぐ追加します – Andrey

+0

ありがとう、私はロード後に保存していました – Andrey

答えて

11

が私のために真の作品へPreserveWhitespaceを設定する - しかし、あなたはをロードする前に、それを行うようになってきましたロード時に空白がスローされないようにします。

using System; 
using System.Xml; 

class Test 
{ 
    static void Main() 
    { 
     XmlDocument testDoc = new XmlDocument(); 
     testDoc.PreserveWhitespace = true; 
     testDoc.Load("Test.xml"); 
     testDoc.Save("Output.xml"); 
    } 
} 

私はこれを試したところ、空白は保存されました。

+0

ここに同じです。間に何かしているのかもしれない? – Adam

+1

ありがとう、私はロード後にそれらを保存していました – Andrey

+6

'PreserveWhitespace'は要素インデントだけを保持していることを気にしてください。新しい行または複数行の値に属性がある場合、それらは再フォーマットされます。 – foka

1

Umm。 PreserveWhiteSpace=trueを使用すると空白が維持されているのを見ています。あなたがロードしたときおそらくそれはfalseでしたか?

var xmlStr = @"<?xml version=""1.0"" encoding=""utf-8""?> 
<root> 

    <element></element> 

</root>"; 

var xmlDoc = new XmlDocument(); 
xmlDoc.PreserveWhitespace = true; 
xmlDoc.LoadXml(xmlStr); 
xmlDoc.Save(Console.Out); 

ショー:あなたがロードする前に

<?xml version="1.0" encoding="utf-16"?> 
<root> 

    <element></element> 

</root> 
+0

どうもありがとう、私は – Andrey

+3

をロードした後にそれらを保存した私に二つの新しい事を教えてくれてありがとう: 第一:リテラルのエスケープを「」 は、第2回:気の利いた方法 – Adam

1

利用のPreserveWhitespace。ロード後に使用する場合は、同じ書式設定を維持します。

like above 
var xmlDoc = new XmlDocument(); 
xmlDoc.PreserveWhitespace = true; 
xmlDoc.LoadXml(xmlStr); 

+4

に 'Console.Out'を使用する方法これは何であったかを越えて何も加えませんすでに2年前の回答で発表されています。 –

関連する問題