これはとても単純な質問にならなければなりませんが、私は答えを得ることができません。
XmlNode があり、このノードを文字列として出力し、読みやすくするためにインデント (タブまたはスペース) をそのままにします。
これまでのところ、XmlWriter、XmlTextWriter、XmlDocument、XmlReader を試しました。
- XmlDocument で PreserveWhitespace を試しましたが、XmlDocument でノードを出力できませんでした。
- XmlTextWriter で Formatting = Formatting.Indented プロパティを試しましたが、内容を文字列に出力する方法がわかりませんでした。
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 を RichTextBox に表示できる FlowDocument に変換しました。