Xml InnerXml缩进问题

时间:2012-03-19 20:51:05

标签: c# xml xmldocument indentation

我有XmlDocument这样:

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

当我使用此文本设置InnerXml的{​​{1}}时

<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>的其余部分保留了原始缩进。我尝试了很多方法,但是它们都提供了完全相同的输出。我尝试的方法是:

  • InnerXmlXmlTextWriter
  • Formatting = Formatting.IndentedXmlWriter
  • 使用上述两种方法转换为XmlWriterSettings { Indent = true }
  • 使用XDocument

有人能指出我的写作方向吗?我做错了什么?

1 个答案:

答案 0 :(得分:2)

你应该使用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();