Это должен быть такой простой вопрос, но я просто не могу получить ответ.
У меня есть XmlNode, и все, что я хочу сделать, это вывести этот node в виде строки с углублениями (вкладками или пробелами), чтобы обеспечить лучшую читаемость.
До сих пор я пробовал XmlWriter, XmlTextWriter, XmlDocument, XmlReader.
- Я попробовал PreserveWhitespace в XmlDocument, но я не смог получить XmlDocument для вывода моего node.
- Я пробовал свойство 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!
}
Причина, по которой мне нужно было это сделать, - вывести node xml с подсветкой синтаксиса. Я использовал AvalonEdit, чтобы выделить xml, вывел выделенный текст в html, а затем преобразовал html в FlowDocument, который может отображаться в RichTextBox.