使用XmlDocument保留xml格式

时间:2011-12-21 12:10:12

标签: c# formatting xmldocument

我正在使用XmlDocument来处理xml

如何使用当前格式保存“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>

3 个答案:

答案 0 :(得分:13)

PreserveWhitespace设置为true对我有用 - 但是在加载之前你必须这样做,以便在加载时不会抛弃空格:

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");
    }
}

我刚刚尝试过,并保留了空白。

答案 1 :(得分: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> 

答案 2 :(得分:1)

在加载之前使用preservewhitespace。它将保持格式相同

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

如果您在加载后使用它。它会杀死之间的空白区域