gpt4 book ai didi

Powershell 保存 XML 并保留格式

转载 作者:行者123 更新时间:2023-12-03 06:53:41 25 4
gpt4 key购买 nike

我想读入 XML 文件并修改元素,然后将其保存回文件。在保留格式并保持匹配行终止符(CRLF 与 LF)的同时,最好的方法是什么?

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

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

问题是,在我混合 LF 和 CRLF 之后,额外的新行(也称为 xml 中的空行)被删除。

最佳答案

您可以使用 PowerShell [xml] 对象并设置 $xml.PreserveWhitespace = $true,或者使用 .NET XmlDocument 执行相同的操作:

# NOTE: Full path to file is *highly* recommended
$f = Convert-Path '.\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.PreserveWhitespace = $true
#$xml.psbase.PreserveWhitespace = $true # Older PS versions

# Load with preserve setting
$xml.Load($f)
$n = $xml.SelectSingleNode('//file')
$n.InnerText = 'b'
$xml.Save($f)

只需确保设置 PreserveWhitespace 调用 XmlDocument.LoadXmlDocument.LoadXml 之前。

注意:这不会保留 XML 属性之间的空格! XML 属性中的空格似乎会被保留,但属性之间的空格不会被保留。该文档讨论了保留“空白节点”(node.NodeType = System.Xml.XmlNodeType.Whitespace),而不是属性

关于Powershell 保存 XML 并保留格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8160613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com