我有一个像这样的:

<Root>
  <Settings>
    <PresentationSettings>
    </PresentationSettings>
  </Settings>
</Root>

当我用这个文本设置XmlDocumentInnerXml时…
<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>的其余部分保留其原始缩进。我尝试了很多方法,但都给出了完全相同的结果。我尝试的方法是:
InnerXmlXmlTextWriter一起。
Formatting = Formatting.IndentedXmlWriter一起。
使用上述两种方法转换为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();

10-07 22:08