首页 > 解决方案 > Powershell - 在计数节点下更新 XML 文本

问题描述

我有一个看起来像这样的 XML 文件

<Transactions>
    <Transaction Type="Login">
        <LoginSetting>blahblah</LoginSetting>
    </Transaction>
    <Transaction Type="Search">
        <Parameters>blahblah</Parameters>
        <Count>Setting</Count>
    </Transaction>
    <Transaction Type="Logout">
        <LogoutSetting>blahblah</LogoutSetting>
    </Transaction>
</Transactions>

该文件的路径存储在 $xml_path 下并使用 powershell 我已将这些设置导入 [xml]$xml

[xml]$xml = (get-content $xml_path)

我正在尝试更新“计数”节点下的值

$xml.Transactions.Transaction.Count = 'NewSetting'

由于 .Count 可以运行以获取名为“事务”的节点数,因此 powershell 给了我这个错误输出

'Count' is a ReadOnly property.

是否有另一种方法来更新“计数”节点下的值?

标签: xmlpowershell

解决方案


这是我的解决方法:我将 xml 数据导入两个变量 - 一个作为纯文本,另一个作为 XML

$xml_flat = (get-content $xml_path)
[xml]$xml = (get-content $xml_path)

我从 xml 变量中提取了“Count”的值(因为它不一定具有显示的“Setting”值)

$count = Select-Xml -XML $xml -XPath "//Count"

我对 flat 变量运行了 .replace 来更新我需要的设置。

$xml_flat = $xml_flat.replace("<Count>$count</Count>","<Count>NewSetting</Count>")

从那里我能够将 $xml_flat 作为 $xml_new 导入到 xml 变量中,并且能够做我需要做的任何其他事情

[xml]$xml_new = $xml_flat

推荐阅读