所以我正在尝试学习如何使用PowerShell修改XML文件,但遇到了一个奇怪的问题,即PowerShell在保存后为我的XML文件添加了空格。
假设我有一个名为test.xml的xml文件,如下所示:
<employee>
<person>
<name>John Doe</name>
<id></id>
</person>
</employee>
我编写了这个PowerShell脚本来更改名称:
$file1 = ".\test.xml"
$file2 = ".\test_new.xml"
$xml = New-Object XML
$xml.Load($file1)
$xml.employee.person.name = "John Smith"
$xml.Save($file2)
到目前为止,这么好。但是,输出文件的格式如下:
<employee>
<person>
<name>John Smith</name>
<id>
</id>
</person>
</employee>
这是一个问题,因为我试图使用类似的代码来更新XML文件,其中的模式限制了包含空白字段中的空格。这使得修改后无法读取。 谁知道我在这里做错了什么?
答案 0 :(得分:1)
这似乎对我有用:
$file1 = ".\test.xml"
$file2 = ".\test_new.xml"
# Remove old variable to ensure new instance
Remove-Variable xml -ea SilentlyContinue
# Create new empty xmldoc
$xml = New-Object XML
# Set preserve whitespace before load
$xml.PreserveWhiteSpace = $true
$xml.Load($file1)
$xml.employee.person.name = "John Smith"
#Set it again before save
$xml.PreserveWhiteSpace = $true
$xml.Save($file2)
答案 1 :(得分:0)
另一种选择是使用名为Format-Xml
的{{3}}命令,例如:
...
$xml.employee.person.name = "John Smith"
$xml | Format-Xml > $file2