【问题标题】:Find and Delete a Node in XML, using libxml2 and xpath使用 libxml2 和 xpath 在 XML 中查找和删除节点
【发布时间】:2020-04-19 08:41:54
【问题描述】:

我有一个大的 XML 文件,其中有多个节点,如下所示;

<my_section enum="ORANGE" name="blah"> </my_section> <my_section enum="APPLE" name="blah blah"> </my_section>

等等。

我需要寻找一个特定的“枚举”类型,例如 APPLE,然后为 APPLE 删除 my_section 节点。

我尝试使用 Xpath,但我不确定这里的 eval 字符串应该是什么。如果我只给 my_section,那么所有的部分都会来。我需要匹配枚举。请帮忙。

【问题讨论】:

    标签: xml xpath libxml2


    【解决方案1】:
    <a>
        <my_section enum="ORANGE" name="blah"> </my_section> 
        <my_section enum="APPLE" name="blah blah"> </my_section>
        <my_section enum="ORANGE1" name="blah1"> </my_section> 
    </a>
    

    使用 XPATH,您可以过滤掉所需的节点。我添加了一个根元素只是为了测试。根据需要进行更改。

    /a/my_section except /a/my_section[@enum = "APPLE"]
    

    【讨论】:

    • 谢谢,这工作!!。还有一个问题,我们可以在这里进行通配符匹配吗?例如,如果我们有 ORANGE 和 ORANGE1 并且我需要同时选择两者,我可以有一些类似 my_section[@enum = "ORANGE*"] 的东西。我试过这个,但没有奏效。在此先感谢:)
    • 使用包含函数然后://a/my_section[contains(@enum,"ORANGE")]
    • 非常好!!..感谢 E.Wiest 和 Slkrasnodar 的及时帮助 :)
    • @E.Weist,为了我的学习,您是否有理由建议使用 contains() 而不是相等性检查?我想,我见过你在其他地方使用它,但真的不确定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多