繁体   English   中英

Powershell-在XML中读取和交换节点值

[英]Powershell - read and exchange node value within XML

我想阅读以下节点并设置一个新值。 由于两个现有的相同节点具有不同的ID,因此我完全无法更改子值。

这是一个示例:XML源:

    <root>
      <node1>
            <child>
                 <baby>
                  <id>1</id>
                  <targetvalue>9999</targetvalue>
                 </baby>

                <baby>
                 <id>2</id>
                 <targetvalue>9999</targetvalue>
                </baby>
             </child>
      </node1>
</root>




if (($myXML.root.node1.child.baby | Where-Object {$_.id -eq '1'-and $_.targetvalue -eq '9999'}) -ne $null) {
"TEST"}

我已经通过get-content尝试过,但是由于两个ID,我无法修改至少一个值。 有人可以帮忙吗? :)

我想这就是你所追求的...

这将设置您要修改的婴儿节点:

$babyNode = ($myXML.root.node1.child.baby | Where-Object {$_.id -eq '1'-and $_.targetvalue -eq '9999'})

这将修改值:

$babyNode.targetvalue = "TEST"

这将显示两个婴儿节点,其中一个具有更新后的值:

$myXML.root.node1.child.baby

我会说:为工作使用正确的工具。 在使用XML时Select-Xml (和XPath)应该是您的首选:

$node = Select-Xml -Path Path\To\Original.xml -XPath "//baby[id = '1']"
$node.Node.targetvalue = '444'
$node.Node.OwnerDocument.Save('c:\temp\Modified.xml')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM