Powershell保存XML并保存格式

前端之家收集整理的这篇文章主要介绍了Powershell保存XML并保存格式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想读取一个XML文件修改一个元素,然后将其保存回文件。在保留格式的同时,还要保持匹配的行终止符(CRLF vs LF),最好的方法是什么?

这是我所拥有的,但它不这样做:

$xml = [xml]([System.IO.File]::ReadAllText($fileName))
$xml.PreserveWhitespace = $true
# Change some element
$xml.Save($fileName)

问题是,额外的新行(也就是xml中的空行)被删除,并且在混合了LF和CRLF之后。

感谢帮助一个电源新手:)

您可以使用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属性之间的空白空间! XML属性中的空白空间似乎被保留,但不在之间。文档涉及保留“空白节点”(node.NodeType = System.Xml.XmlNodeType.Whitespace)而不是属性

猜你在找的XML相关文章