XmlDocument InnerXml Форматирование - PullRequest
       16

XmlDocument InnerXml Форматирование

0 голосов
/ 12 декабря 2011

У меня есть документ, в котором я заменяю внутренний XML некоторого узла:

    var xmlReplacement = File.ReadAllText(path); // this xml is well formatted with indentations itself, but not indented at the correct level for the document it's about to be inserted into

    var document = new XmlDocument();
    document.PreserveWhitespace = true;
    document.Load(path);

    // replace inner xml of ContainingNode
    var node = document.SelectSingleNode("//ContainingNode");
    node.InnerXml = xmlReplacement;

    // write back to the output file
using (var writer = new XmlTextWriter(path, null))
{
    writer.Formatting = Formatting.Indented;
    document.WriteTo(writer);
}

Я получаю новый внутренний XML без отступа (полностью слева) изакрыть узел на той же строке, что и закрытие моего замещающего узла XML.

Как я могу получить это право?

1 Ответ

0 голосов
/ 12 декабря 2011

Нечто подобное может сработать.Позвольте схеме сделать отступ для вас.

var node = document.SelectSingleNode("//ContainingNode");

node.RemoveAll();
using (var tr = XmlReader.Create(xmlReplacement))
{
    while (tr.Read())
    {
        node.AppendChild(tr);
    }
}

РЕДАКТИРОВАТЬ: Изменено для удаления устаревших XmlTextReader РЕДАКТИРОВАТЬ 2: Изменено для использования using

...