我在XML文档中有类似的内容:
<variables>
<variable>
<name>ctrl_btn</name>
<value>button</value>
</variable>
<variable>
<name>ctrl_snpt_calctrl</name>
<value>The date entered must be less than or equal to</value>
</variable>
</variables>
我能够使用Powershell提取文档中的某些元素(例如根据索引号获取名称或值元素)。但是,我不遵循这些指数的工作方式(或者无论指数是什么)。例如,查找name [1]给我ctrl_btn,但我会假设这将是name [0]。有人可以解释一下吗?
然而,我真正的问题是创建一个脚本来删除文档中的某些元素集合。例如,如果我想删除以下内容:
<variable>
<name>ctrl_snpt_calctrl</name>
<value>The date entered must be less than or equal to</value>
</variable>
我一直在搜索,但大多数示例只从XML中删除某个节点而不是上面的整个组。
XML文档中的名称和值始终是唯一的(顺便说一句,它在<variable></variable>
元素中包含超过5000个不同的名称/值组合。
我要删除的元素列表包含在仅列出名称值的文本文件中(例如,文本文档将列出ctrl_btn,然后列出ctrl_snpt_calctrl)。
为了让您更好地了解,这是脚本执行的整个过程:
<name></name>
元素之间的值<variable></variable>
标签及其间的所有内容。我不确定上述过程是否有助于解释,但我认为我最好包括它。
那么你如何删除这些?
答案 0 :(得分:7)
假设您有一个字符串数组,其中每个元素都是您要删除的变量元素的名称,您可以执行以下操作:
$names = 'ctrl_btn','ctrl_snpt_calctrl'
$xml.variables.variable | ? { $names -contains $_.name } | % {$xml.variables.RemoveChild($_)}
我能够使用Powershell提取文档中的某些元素(例如根据索引号获取名称或值元素)。但是,我不遵循这些指数的工作方式(或者无论指数是什么)。例如,查找name [1]给我ctrl_btn,但我会假设这将是name [0]。有人可以解释一下吗?
不保证Xml订单,所以不要依赖于此。例如,在我的机器上,我得到了您期望的结果:
$xml.variables.variable.name[0] = ctrl_btn
$xml.variables.variable.name[1] = ctrl_snpt_calctrl