当元素为空时,XMLDocument.Save将返回载体添加到XML

时间:2013-10-08 21:29:53

标签: c# .net xml

我正在加载一个XML文档,其中包含一些没有innertext的标记。

如果我用一些数据填充innertext,那么它可以根据需要工作(你可以在一行上打开标签,innertext和结束标签),如下所示......

<root>
  <element>value</element>
</root>

问题出现在没有值的标签上。这些应该以与上面相同的方式显示,除了没有粗略值之外,如下所示......

<root>
  <element></element>
</root>

然而,当innertext有一个空字符串时,它会添加一个回车符&amp;换行不是预期的!它最终看起来像以下......

<root>
  <element>
  </element>
</root>

这是我当前的代码,可以产生上述结果......

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:\test.xml");

//Save the xml and then cleanup
xmlDoc.Save(@"C:\test.xml");

3 个答案:

答案 0 :(得分:21)

这为我解决了......

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:\test.xml");

//Save the xml and then cleanup
XmlWriterSettings settings = new XmlWriterSettings { Indent = true };
XmlWriter writer = XmlWriter.Create(@"C:\test.xml", settings);
xmlDoc.Save(writer);

答案 1 :(得分:1)

答案 2 :(得分:0)

可能为时已晚,但我提到了Arvo Bowen给出的解决方案。 Arvo的解决方案在C#中,我在Powershell语法

中写了相同的内容
# $dest_file is the path to the destination file
$xml_dest = [XML] (Get-Content $dest_file)

#
#   Operations done on $xml_dest
#

$settings = new-object System.Xml.XmlWriterSettings
$settings.CloseOutput = $true
$settings.Indent = $true
$writer = [System.Xml.XmlWriter]::Create($dest_file, $settings)

$xml_dest.Save($writer)
$writer.Close()

它解决了我的两个问题: