我想阅读以下节点并设置一个新值。由于两个现有相同的节点具有不同的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,我无法修改至少一个值。愿有人请帮忙吗? :)
答案 0 :(得分:0)
我认为这就是你所追求的......
这将设置您要修改的婴儿节点:
$babyNode = ($myXML.root.node1.child.baby | Where-Object {$_.id -eq '1'-and $_.targetvalue -eq '9999'})
这会修改值:
$babyNode.targetvalue = "TEST"
这显示了两个婴儿节点,其中一个具有更新的值:
$myXML.root.node1.child.baby
答案 1 :(得分:0)
我会说:使用正确的工具来完成工作。在使用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')