您可以使用PowerShell的[XML]对象,并设置$xml.PreserveWhitespace = $true
,或利用.NET XmlDocument的做同样的事情
感谢:
$f = '.\xml_test.xml'
# Using .NET XmlDocument
$xml = New-Object System.Xml.XmlDocument
$xml.PreserveWhitespace = $true
# Or using PS [xml] (older PowerShell versions may need to use psbase)
$xml = New-Object xml
#$xml.psbase.PreserveWhitespace = $true # Older PS versions
$xml.PreserveWhitespace = $true
# Load with preserve setting
$xml.Load($f)
$n = $xml.SelectSingleNode('//file')
$n.InnerText = 'b'
$xml.Save($f)
只要确保在调用XmlDocument.Load或XmlDocument.LoadXml之前设置PreserveWhitespace。
注意:这不保留XML属性之间的空白!空白in XML属性似乎被保留,但不是,在之间。该文件谈到保留“空白节点”(node.NodeType = System.Xml.XmlNodeType.Whitespace
)而不是属性。
“保存格式”是什么意思? – manojlds
它可能不会有所作为,但是您是否尝试过使用'$ xml = [xml](Get-Content $ filename)'而不是?否则,您可能必须使用本机.NET XmlDocument类和方法来加载,编辑和保存文件。 – Ryan
@manojids我想保存空白,换行符,标签等。 –