Это, должно быть, такой простой вопрос, но я просто не могу получить ответ.
У меня есть 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.