【问题标题】:Remove elements from XML从 XML 中删除元素
【发布时间】:2010-12-08 18:45:07
【问题描述】:

我有以下格式的 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>

XML 文档中有数千个&lt;policygroup_item&gt; 除外。

我需要删除所有policygroup_item&lt;policygroupitem_productname&gt;&lt;policygroupitem_spname&gt; 不匹配的任何以下组合:

  • 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 Standard (x64) Gold
  • Windows 2008 R2 企业版 (x64) 黄金版

有没有办法用 XSLT 或 powershell 来做到这一点?或者也许是 VB 脚本?

谢谢

布拉德

【问题讨论】:

    标签: xml transform


    【解决方案1】:

    不要将其视为删除不匹配的内容,而应将其视为复制匹配的内容。使用&lt;xsl:copy-of&gt; element 选择您要保留的所有标签。

    【讨论】:

    • Don - 感谢您的建议,尽管我必须承认我对 xsl 的经验很少。我试图谷歌 xsl:copy-of 但我不知道如何使用它来提取我想要的元素。您(或其他任何人)是否有任何我可以用来入门的示例?谢谢
    • 我在答案中包含的链接将您带到 w3schools.com。这是我在网上找到的关于 XSLT 的最佳基本介绍。另请查看同一站点上的 XPath 参考。如果这没有帮助,我推荐 Michael Kay 的 XSLT 书:wrox.com/WileyCDA/WroxTitle/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多