2011-12-21 80 views
2

格式化我使用XmlDocument的使用XML保留XML使用XmlDocument的

我如何救我「的XmlDocument」我目前的格式?

當前格式:

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

    <element></element> 

</root> 

代碼:

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

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

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

有類似的話題: XmlDocument class is removing formatting, c#, .NET

接受的答案是PreserveWhiteSpace = true,這在現實中刪除,而不是所有的空格保存它們。

例子:

代碼:

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,則保留顯着的空白區域,空白區域不是.' – 2011-12-21 12:15:24

+0

是的,我現在將添加輸出 – Andrey 2011-12-21 12:16:26

+0

非常感謝,我在加載 – Andrey 2011-12-21 12:20:40

回答

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 2011-12-21 12:18:50

+1

非常感謝,我在加載後保存了它們 – Andrey 2011-12-21 12:19:33

+6

請注意,「PreserveWhitespace」僅保留元素縮進。如果你有新行或多行值的屬性,它們將被重新格式化。 – foka 2013-03-08 10:21:54

1

嗯。使用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 2011-12-21 12:19:43

+3

謝謝你教我兩件新東西: 第一次:文字轉義「」 第二次:如何在一個漂亮的方式使用'Console.Out' – Adam 2011-12-21 12:20:15

1

使用preservewhitespace。它將保持相同的格式

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

如果您將在加載後使用它。它會殺死

之間的空白
+4

這增加了什麼之外什麼是已經在2年前的答案中提出。 – 2014-05-06 02:45:54