我正在加载一个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");
答案 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)
您可以通过Settings Property中的XMLWriter控制它。
查看此示例以及以下参考资料。 http://msdn.microsoft.com/en-us/library/ms162618.aspx
Refernces http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.aspx http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.newlinehandling.aspx
答案 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()
它解决了我的两个问题:
<tag1>$null</tag1>
实际上会以<tag />
的形式写入文件
参考这个帖子:
Can we force XmlWriter to issue <my-tag></my-tag> rather than <my-tag/>?