Сохранить форматирование XML с помощью XmlDocument - PullRequest
3 голосов
/ 21 декабря 2011

Я использую 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 удаляет форматирование, 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 ]

13 голосов
/ 21 декабря 2011

Настройка 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 голос
/ 06 мая 2014

используйте preservewhitespace перед загрузкой.Форматирование будет таким же

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

, если вы будете использовать его после загрузки.это убьет пробелы между

1 голос
/ 21 декабря 2011

Ммм.Я вижу, что пробелы сохраняются при использовании 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...