5

这是我到目前为止所拥有的:

$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" />

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

4

2 回答 2

1

请查看与您的问题非常相似的问题的答案:

虽然似乎没有保留 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 致敬

于 2018-05-09T15:02:30.023 回答
-3

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

于 2012-06-29T21:26:41.957 回答