【问题标题】:How can I update the value for a XML node using PowerShell? [duplicate]如何使用 PowerShell 更新 XML 节点的值? [复制]
【发布时间】:2010-07-08 10:13:53
【问题描述】:

如何更改节点的值 &lt;Test&gt;<b>Test</b>&lt;/Test&gt;&lt;Test&gt;<b>Power</b>&lt;/Test&gt;?

示例

<?xml version="1.0"?>
<configuration>
    <appSettings>
        <add key="DeploymentDate" value="test" />
        <add key="DateOfInitialization" value="Vinoj" />
    </appSettings>
    <Test>Test</Test>
</configuration>

这是我目前使用的 PowerShell 脚本:

$configuration = "app.config"
[xml]$xml = New-Object XML
$xml.Load($configuration)
$xml.selectnodes("/configuration/Test") = {"UST"}
$xml.Save($configuration)

【问题讨论】:

    标签: powershell


    【解决方案1】:

    我不知道你到底想达到什么,但这个例子应该给你和想法:

    $file = 'c:\temp\aa\ServerService.exe.config'
    $x = [xml] (Get-Content $file)
    Select-Xml -xml $x  -XPath //root/level |
        % { $_.Node.'#text' = 'test'
            $_.Node.SomeAttribute = 'value'
          }
    $x.Save($file)
    

    您不需要使用 .NET 进行 xpath 查询。只需使用 PowerShell(使用 Select-Xml)。
    通过Get-Content 加载xml 文件并将其转换为[xml] 也很常见,这会创建XmlDocument 并加载文件内容。

    【讨论】:

    • 工作就像一个魅力。你能告诉我什么吗? % 一般情况下?
    • 表示foreach-object。你可以通过Get-Alias -Name %找到它
    • 您还可以访问测试值$xml.configuration.test - 非常漂亮(考虑到它不是集合),但是您可以使用foreach ($thing in $xml.things) { $thing.value } 。我在这里是因为我需要在增加版本后保存我的 XML 文件。这对我有帮助。 +1
    猜你喜欢
    • 2013-05-24
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    相关资源
    最近更新 更多