在空白字段中保存XML添加空间

时间:2013-10-29 21:56:24

标签: xml powershell

所以我正在尝试学习如何使用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文件,其中的模式限制了包含空白字段中的空格。这使得修改后无法读取。 谁知道我在这里做错了什么?

2 个答案:

答案 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