这必须是一个如此简单的问题,但我无法得到答案.
我有一个XmlNode,我想要做的就是输出这个节点,作为一个字符串,缩进(制表符或空格)完整,以提供更好的可读性.
到目前为止,我尝试了XmlWriter,XmlTextWriter,XmlDocument,XmlReader.
将XmlNode输出为字符串WITHOUT缩进很容易.我只是做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!
}
Run Code Online (Sandbox Code Playgroud)
我需要这样做的原因是输出节点的xml语法高亮.我使用AvalonEdit突出显示xml,将突出显示的文本输出到html,然后将html转换为可以在RichTextBox中显示的FlowDocument.
编辑:谢谢你的回答.我目前正在研究它!!
我有3个方法,S()返回字符串,D()返回double,B()返回bool.
我还有一个变量来决定我使用哪种方法.我想这样做:
// I tried Func<object> method; but it says D() and B() don't return object.
// Is there a way to use Delegate method; ? That gives me an eror saying method group is not type System.Delegate
var method;
var choice = "D";
if(choice=="D")
{
method = D;
}
else if(choice=="B")
{
method = B;
}
else if(choice=="S")
{
method = S;
}
else return;
DoSomething(method); // call another method using the method as a delegate.
// or …Run Code Online (Sandbox Code Playgroud) 我可以将DataContext设置为任何对象,然后将该对象的属性绑定到我的控件.
我想用事件处理程序做同样的事情.我有一类事件处理程序,我希望xaml使用.但是,xaml在后面的代码中查找事件处理程序.
<Button Click="OnSearch"/>
Run Code Online (Sandbox Code Playgroud)
我收到警告,告诉我OnSearch在类后面的代码中不存在.
我是WPF的新手,我正在努力学习.我尝试在事件处理程序上绑定,但显然不起作用!