使用 xpath 表达式排除节点及其子节点

克里斯

鉴于此 xml

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
    <actors>
        <actor id="1">Christian Bale</actor>
        <actor id="2">Liam Neeson</actor>
        <actor id="3">Michael Caine</actor>
    </actors>
    <foo:singers>
        <foo:singer id="4">Tom Waits</foo:singer>
        <foo:singer id="5">B.B. King</foo:singer>
        <foo:singer id="6">Ray Charles</foo:singer>
    </foo:singers>
</root>

我想排除actors所有actor元素。

这个xpath

/root/*[not(self::actors)] 

返回

<foo:singers xmlns:foo="http://www.foo.org/">
    <foo:singer id="4">Tom Waits</foo:singer>
    <foo:singer id="5">B.B. King</foo:singer>
    <foo:singer id="6">Ray Charles</foo:singer>
</foo:singers>

而我想要

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
    <foo:singers>
        <foo:singer id="4">Tom Waits</foo:singer>
        <foo:singer id="5">B.B. King</foo:singer>
        <foo:singer id="6">Ray Charles</foo:singer>
    </foo:singers>
</root>
迈克尔·凯

XPath 表达式选择提供的输入文档中的节点。他们无法更改输入文档。“root”元素有“actors”作为子元素,如果你选择它,它仍然会有“actors”作为子元素。

同样,如果您选择 foo:singers 元素,它仍将“root”作为父元素。

许多显示 XPath 表达式结果的客户端应用程序选择显示以选定节点为根的子树,而忽略树中的其他节点。这只是显示结果的一种方式:您需要将 XPath 表达式选择的节点与显示结果时在屏幕上显示的节点区分开来。

如果要创建不同的树,其中“根”没有“演员”子级,则需要 XSLT 或 XQuery。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用XPATH到达特定的子节点?

XPath表达式:在元素节点之间选择文本节点

如何使用php xpath获取节点的所有子节点?

使用XPath测试当前节点

如何使用XPATH for XML获取子节点数

如何使用xpath表达式选择位于父节点的同级内部的节点?

XPath表达式来获取具有特定值的子节点的节点...名称空间不可知

如何在Python中使用XPath选择同级的子节点?

节点内内容的XPath表达式,直到遇到带有字符串的节点为止

LXML XPath表达式仅返回第一个子节点,而浏览器确认多个子节点

使用XPath选择节点

使用xpath选择某些子节点

使用xpath查询返回子节点

如何使用XPath for HTML获取子节点的数量?

XML使用XPath表达式获取td单元的值

使用Oracle XML DB向与XPATH表达式匹配的所有节点添加属性

RSelenium-如何获取节点的子节点编号及其xpath

Groovy使用带有certian子计数和表达式的gpath查找节点

在xpath表达式中不使用名称空间

css/xpath 选择器在使用 selenium webdriver (java) 时排除元素中的子节点

在节点对象的 grails 中使用 xpath 表达式

具有多节点 xpath 的 oracle xmltable 表达式是否保留节点的物理顺序?

XPath 表达式在不应该返回节点时返回节点

在 xPath 表达式中使用变量

使用多轴表达式的 XPath

如何使用 xpath 获取所有子节点文本?

使用正则表达式如何排除邮件域及其子域?

为什么我不能使用带有节点名称的 XPath 表达式

使用 xpath 访问具有命名空间的子节点