我有一个像这样的:
<Root>
<Settings>
<PresentationSettings>
</PresentationSettings>
</Settings>
</Root>
当我用这个文本设置
XmlDocument
的InnerXml
时…<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>
似乎
<PresentationSettings>
(即InnerXml
)的根从右缩进列开始,但是<Desktop>
的其余部分保留其原始缩进。我尝试了很多方法,但都给出了完全相同的结果。我尝试的方法是:InnerXml
与XmlTextWriter
一起。Formatting = Formatting.Indented
与XmlWriter
一起。使用上述两种方法转换为
XmlWriterSettings { Indent = true }
。使用
XDocument
有人能指点我写字的方向吗?我做错什么了?
最佳答案
您应该使用xdocument或xelement,xmldocument是.net 2.0aka过时的。
而是写:
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();