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)而不是属性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇