XmlWriterSettings, XmlTextWriter, XmlWriter не форматирует вывод ?!Нет новых строк, нет отступа - PullRequest
3 голосов
/ 26 сентября 2011

Использование .Net 3.5 SP1 в VS2008 У меня есть XmlDocument и я пытался записать его в файл:

using (XmlTextWriter tw = new XmlTextWriter(outXmlFileName, System.Text.Encoding.UTF8))
{
    tw.Formatting = Formatting.Indented;
    tw.Indentation = 3;
    tw.IndentChar = ' ';
    tw.QuoteChar = '\'';
    doc.Save(tw);
}

И

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings))
{
    doc.Save(writer);
}

Что не ясно из документации, http://msdn.microsoft.com/en-us/library/kkz7cs0d.aspx,, если я должен использовать XmlWriter.Create () выше .Net 2, в любом случае ни один из способов не форматирует вывод!Я просто получаю то, что находится в экземпляре XmlDocument:

<?xml version='1.0' encoding='utf-8'?>
<root>
<node1  />
<node2 value='Data' />
<node3 value='ID' /><node4><item>
<from value='1 Jan 1870' />
<id value='PF' />
<to value='1 Jan 1940' /></item></node4>
</root>

Как мне привести в порядок свой XML перед тем, как записать его в файл .Net?!

1 Ответ

2 голосов
/ 26 сентября 2011

Я заставил его работать, загрузив XML во второй промежуточный экземпляр XmlDocument, чтобы он забыл исходный пробел:

            XmlWriterSettings settings = new XmlWriterSettings(); // http://msdn.microsoft.com/en-us/library/kkz7cs0d(VS.85).aspx
            settings.Indent = true;

            XmlDocument doc2 = new XmlDocument();
            doc2.LoadXml(doc.OuterXml);

            using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings))
            {
                doc2.Save(writer);
            }
...