打开/保存xml,同时保留节点属性之间的换行符

时间:2012-06-29 17:38:36

标签: .net xml powershell

这是我到目前为止所做的:

$XML = New-Object System.Xml.XmlDocument
$XML.PreserveWhitespace = $true
$XML.Load($path)
#change some node attributes
$XML.Save($path)

如果我打开一个XML文件,并采用这样的代码片段:

<Node 
Name="tyjytj" 
Number="rthjr" 
Source="rjyrtjrjrtj" 
BinaryDrive="teheherhehtr" />

它会像这样保存:

<Node Name="tyjytj" Number="rthjr" Source="rjyrtjrjrtj" BinaryDrive="teheherhehtr" />

但我希望能够更改(例如)节点的名称,同时在每个属性之间保持换行符。我希望格式在打开/保存之前保持原样。

2 个答案:

答案 0 :(得分:1)

请查看this answer与您的问题非常相似的问题:

虽然似乎没有办法保留xml属性格式,但您可以使用XmlWriterSettings和XmlWriter类的强大功能在xml文档中自行定义它。

您可以指定它在属性之间使用换行符,如下所示:

$xwSettings = new-object System.Xml.XmlWriterSettings
$xwSettings.NewLineOnAttributes = $true

然后使用XmlWriter和这些设置保存文档:

$xmlWriter = [Xml.XmlWriter]::Create("c:\temp\newlines.xml", $xwSettings)
$doc.Save($xmlWriter)

(代码全部来自原始答案。感谢vonPryz

答案 1 :(得分:-3)

世界上没有XML解析器会告诉您开始标记中的属性是否由空格,换行符或制表符分隔。你不应该关心。