C# Xml缩进问题
我有这样一个C# Xml缩进问题,c#,xml,xmldocument,indentation,C#,Xml,Xmldocument,Indentation,我有这样一个XmlDocument: <Root> <Settings> <PresentationSettings> </PresentationSettings> </Settings> </Root> <Root> <Settings> <PresentationSettings> <Desktop> <Widg
XmlDocument
:
<Root>
<Settings>
<PresentationSettings>
</PresentationSettings>
</Settings>
</Root>
<Root>
<Settings>
<PresentationSettings>
<Desktop>
<WidgetElements>
<WidgetElement Name="1">
</WidgetElement>
<WidgetElement Name="2">
</WidgetElement>
</WidgetElements>
</Desktop>
</PresentationSettings>
</Settings>
</Root>
…,输出文件的保存方式如下:
<Root>
<Settings>
<PresentationSettings>
</PresentationSettings>
</Settings>
</Root>
<Root>
<Settings>
<PresentationSettings>
<Desktop>
<WidgetElements>
<WidgetElement Name="1">
</WidgetElement>
<WidgetElement Name="2">
</WidgetElement>
</WidgetElements>
</Desktop>
</PresentationSettings>
</Settings>
</Root>
似乎InnerXml
(即
)的根从右缩进列开始,但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();
XElement root=XElement.Parse(“”);
XElement pSettings=root.Element(“设置”).Element(“呈现设置”);
添加(otherContentXml);
root.Save(文件名);
或
string formattedXml=root.ToString();
空白在XML中并不重要-你为什么要“解决”这个问题?我有点痴迷于事情是否井然有序:P虽然它几乎不会影响我的应用程序,但我仍然想知道为什么会发生这种情况,以及如何修复它。之所以会发生这种情况,是因为空白对于XML来说并不重要——这并不重要,为什么要在它上面浪费代码和CPU周期?有时,像浪费代码/时间/CPU周期,或者不影响执行之类的事情并不重要。但是正确的输出是正确的,这就是我的观点。这是正确的输出。我知道我可以使用XElement来完成,但库太大,无法转换为4.0。但是,因为这是正确的答案,我也知道(:P)我接受它。顺便说一句,pSettings.Add(otherContentXml)代码>将
符号转换为和。您需要添加从字符串传递的XElement
。