从XML中删除元素

从XML中删除元素,xml,transform,Xml,Transform,我有以下格式的XML: <policy_groups> <policy_group> <policygroup_name>Application Server with IIS</policygroup_name> <policygroup_id>38</policygroup_id> <policygroup_description /> <

我有以下格式的XML:

<policy_groups>
    <policy_group>
    <policygroup_name>Application Server with IIS</policygroup_name>
        <policygroup_id>38</policygroup_id>
        <policygroup_description />
        <policygroup_creatorname>VMW2K3-SSI10-KF\VMW2K3-SSI10-KF\Administrator</policygroup_creatorname>
        <policygroup_patchgroup>-1</policygroup_patchgroup>
        <policygroup_signaturegroup>-1</policygroup_signaturegroup>
        <policygroup_system>false</policygroup_system>
        <policygroup_item>
            <policygroupitem_id>83217</policygroupitem_id>
            <policygroupitem_name>.NET Framework Support Service Status</policygroupitem_name>
            <policygroupitem_type>0</policygroupitem_type>
            <policygroupitem_policygroupid>38</policygroupitem_policygroupid>
            <policygroupitem_productname>Windows Server 2003, Standard Edition</policygroupitem_productname>
            <policygroupitem_spname>Gold</policygroupitem_spname>
            <policygroupitem_checkshavlikid>207</policygroupitem_checkshavlikid>
            <policygroupitem_value>Disabled-Not Found</policygroupitem_value>
            <policygroupitem_operator>=</policygroupitem_operator>
            <policygroupitem_displayvalue>Not Installed</policygroupitem_displayvalue>
        </policygroup_item>
        <policygroup_item>
            <policygroupitem_id>85541</policygroupitem_id>
            <policygroupitem_name>.NET Framework Support Service Status</policygroupitem_name>
            <policygroupitem_type>0</policygroupitem_type>
            <policygroupitem_policygroupid>38</policygroupitem_policygroupid>
            <policygroupitem_productname>Windows Server 2003, Standard Edition</policygroupitem_productname>
            <policygroupitem_spname>SP1</policygroupitem_spname>
            <policygroupitem_checkshavlikid>207</policygroupitem_checkshavlikid>
            <policygroupitem_value>Disabled-Not Found</policygroupitem_value>
            <policygroupitem_operator>=</policygroupitem_operator>
            <policygroupitem_displayvalue>Not Installed</policygroupitem_displayvalue>
        </policygroup_item>
    </policy_group>
    </policy_groups>

带IIS的应用服务器
38
VMW2K3-SSI10-KF\VMW2K3-SSI10-KF\Administrator
-1
-1
假的
83217
.NET Framework支持服务状态
0
38
Windows Server 2003,标准版
黄金
207
找不到已禁用的
=
未安装
85541
.NET Framework支持服务状态
0
38
Windows Server 2003,标准版
SP1
207
找不到已禁用的
=
未安装
除了XML文档中有数千个

如果
与下列任何组合不匹配,我需要删除任何
保单组\u项目

  • Windows 2000高级服务器SP4
  • Windows 2003企业版SP2
  • Windows 2003企业版(x64)SP2
  • Windows 2003 R2企业版SP2
  • Windows 2003 R2企业版(x64)SP2
  • Windows 2008企业版SP2
  • Windows 2008企业版(x64)SP2
  • Windows 2008标准版SP2
  • Windows 2008 R2标准(x64)金色
  • Windows 2008 R2企业版(x64)金牌
有没有办法用XSLT或powershell做到这一点?或者VB脚本

谢谢


Brad

不要将其视为删除不匹配的内容,而应将其视为复制匹配的内容。在您想要保留的所有标记中选择使用。

Don-谢谢您的建议,尽管我必须承认我对xsl的经验很少。我已经尝试用谷歌搜索xsl:copy of,但我不确定如何使用它来提取我想要的元素。你(或其他任何人)有什么我可以用来开始的例子吗?感谢我在答案中包含的链接带您访问w3schools.com。这是我在web上找到的对XSLT最好的基本介绍。还可以查看同一站点上的XPath引用。如果这没有帮助,我推荐Michael Kay的XSLT书籍: