繁体   English   中英

Xml InnerXml缩进问题

[英]Xml InnerXml indentation issue

我有一个像这样的XmlDocument

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

当我用这个文本设置<PresentationSettings>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>

似乎InnerXml的根(即<Desktop> )从右侧缩进列开始,但InnerXml其余部分保留了它的原始缩进。 我尝试了很多方法,但是它们都提供了完全相同的输出。 我尝试的方法是:

  • XmlTextWriterFormatting = Formatting.Indented
  • XmlWriterXmlWriterSettings { 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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM