C# 如何在XmlWriter上为特定元素节点设置缩进属性

C# 如何在XmlWriter上为特定元素节点设置缩进属性,c#,xmlwriter,C#,Xmlwriter,对不起,如果标题让人困惑,下面是我想要实现的。我有一个正在创建并传递给方法的XmlWriter对象 public static void foo(XmlWriter xw) { xw.WriteStartElement("root"); } 此时,XmlWriter被实例化,Xml声明已经编写。现在,在写入根元素之后,我需要将XmlWriter上的Indent属性设置为true(在创建XmlWriter时设置为false)。像这样的 public static void foo(XmlW

对不起,如果标题让人困惑,下面是我想要实现的。我有一个正在创建并传递给方法的XmlWriter对象

public static void foo(XmlWriter xw)
{
   xw.WriteStartElement("root");
}
此时,XmlWriter被实例化,Xml声明已经编写。现在,在写入根元素之后,我需要将XmlWriter上的Indent属性设置为true(在创建XmlWriter时设置为false)。像这样的

public static void foo(XmlWriter xw)
{
   xw.WriteStartElement("root");
   // xw.Settings.Indent = true; - I know this won't work
   // continue writing elements...
}

找不到在该点设置缩进的方法。有什么想法吗?

使用XmlTextWriter。然后可以将缩进属性设置为要缩进的空格数

要使用缩进属性,不能有混合内容


“只要元素不包含混合内容,元素就会缩进。一旦调用WriteString或WriteWhitespace方法写出混合元素内容,XmlWriter就会停止缩进。一旦混合内容元素关闭,缩进就会恢复。”

感谢您的建议,我宁愿使用XmlWriter,因为将其更改为XmlTextWriter需要我更改整个模块。所有组件都依赖于XmlWriter,因此我无法轻松地进行更改。还有其他建议吗?我做了更多的研究。一旦XmlWriter启动,您就无法更改设置属性。如果您想缩进或更新XmlWriter的创建位置并传入XmlWriterSettingsWell,似乎需要重构模块。是的,在花了几个小时之后,我决定不改变Xml创建过程本身,但在生成的XML文件中进行更改,因为在我的例子中,我需要删除XML声明和根节点之间的缩进。但我要把你的回答标记为回答,因为这是唯一的回答,包含了一些有用的信息。