2011-12-21 57 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