15

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

如果我用一些数据填充内部文本,那么它会根据需要工作(你会在一行上得到开始标签、内部文本和结束标签),如下所示......

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

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

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

但是,当内部文本有一个空字符串时,它会添加一个回车和换行,这不是预期的!它最终看起来像下面......

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

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

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

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

3 回答 3

24

这为我解决了...

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);
于 2013-10-08T21:54:11.317 回答
1

可能为时已晚,但我参考了 Arvo Bowen 给出的解决方案。Arvo 的解决方案是用 C# 编写的,我在 Powershell Syntax 中编写了相同的

# $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()

它解决了我的两个问题:

于 2017-03-23T18:08:18.080 回答