Как в C # преобразовать XmlNode в строку с отступом? (Без цикла)

Это должен быть такой простой вопрос, но я просто не могу понять ответ.

У меня есть XmlNode, и все, что я хочу сделать, это вывести этот узел в виде строки с неповрежденными отступами (табуляцией или пробелами) для лучшей читаемости.

Пока что я пробовал XmlWriter, XmlTextWriter, XmlDocument , XmlReader.

  • Я попробовал PreserveWhitespace в XmlDocument, но не смог заставить XmlDocument выводить мой узел.
  • Я попробовал свойство Formatting = Formatting.Indented в XmlTextWriter, но не мог понять, как вывести содержимое в строку.

Вывести XmlNode в виде строки БЕЗ отступов очень просто. Я просто делаю XmlNode.OuterXml. Как мне сделать там углубления?

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

Спасибо.

Изменить: Для будущих читателей вот ответ:

  var xmlNode = is some object of type XmlNode

  using (var sw = new StringWriter())
  {
      using (var xw = new XmlTextWriter(sw))
      {
        xw.Formatting = Formatting.Indented;
        xw.Indentation = 2; //default is 1. I used 2 to make the indents larger.

        xmlNode.WriteTo(xw);
      }
      return sw.ToString(); //The node, as a string, with indents!
  }

Причина, по которой мне нужно было это сделать, заключалась в том, чтобы вывести xml узла с выделением синтаксиса. Я использовал AvalonEdit для выделения xml, вывел выделенный текст в html, а затем преобразовал html в FlowDocument, который можно было отображать в RichTextBox.

20
задан Yuf 22 June 2011 в 15:58
поделиться