我有一个 XmlDocument
像这样:
<Root>
<Settings>
<PresentationSettings>
</PresentationSettings>
</Settings>
</Root>
当我设置 InnerXml
的 <PresentationSettings>
用这个文本...
<Desktop>
<WidgetElements>
<WidgetElement Name="1">
</WidgetElement>
<WidgetElement Name="2">
</WidgetElement>
</WidgetElements>
</Desktop>
...,输出文件是这样保存的:
<Root>
<Settings>
<PresentationSettings>
<Desktop>
<WidgetElements>
<WidgetElement Name="1">
</WidgetElement>
<WidgetElement Name="2">
</WidgetElement>
</WidgetElements>
</Desktop>
</PresentationSettings>
</Settings>
</Root>
看来InnerXml
的根(即 <Desktop>
)从右缩进列开始,但 InnerXml
的其余部分保留其原始缩进。我尝试了很多方法,但所有方法都给出了完全相同的输出。我试过的方法是:
-
XmlTextWriter
与Formatting = Formatting.Indented
. -
XmlWriter
与XmlWriterSettings { Indent = true }
. - 转换为
XDocument
使用上述两种方法。 - 使用
XmlDocumentFragment
.
任何人都可以指出我的写作方向吗?我做错了什么?
最佳答案
您应该使用 XDocument 或 XElement,XmlDocument 是 .Net 2.0 又名过时的。
改为写:
XElement root = XElement.Parse("<Root><Settings><PresentationSettings></PresentationSettings></Settings></Root>");
XElement pSettings = root.Element("Settings").Element("PresentationSettings");
pSettings.Add(otherContentXml);
root.Save(fileName);
or
string formattedXml = root.ToString();
关于c# - Xml InnerXml 缩进问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777742/