gpt4 book ai didi

powershell - 如何删除所有 XML 子节点但不删除 Powershell 中的属性

转载 作者:行者123 更新时间:2023-12-03 17:03:24 24 4
gpt4 key购买 nike

来自这里:

<products id="col">
<product code="id1" />
<product code="id2" />
</products>

我想得到这个:

<products id="col">
</products>

如果我使用 RemoveAll() 它也会删除产品 id 属性,所以我会得到这个

<products>
</products>

这不是我想要的。我可以使用什么方法将我的 id 属性保留在产品节点中?

最佳答案

无需调用 RemoveAll(),您需要找到要删除的节点,然后使用 RemoveChild() 手动删除每个节点:

$XmlDocument = [xml]@'
<products id="col">
<product code="id1" />
<product code="id2" />
</products>
'@

$ChildNodes = $XmlDocument.SelectNodes('//product')

foreach($Child in $ChildNodes){
[void]$Child.ParentNode.RemoveChild($Child)
}

$XmlDocument.Save("C:\path\to\doc.xml")

如果您不知道直接子节点的名称,而只知道父节点名称,您仍然可以使用 XPath 来选择它们:'//ParentNodeName/child::*'

$ChildNodes = $XmlDocument.SelectNodes('//products/child::*')

关于powershell - 如何删除所有 XML 子节点但不删除 Powershell 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com