Xml 如何使用XPath获取所有子元素,但仅限于某些元素
我一直在关注xmlXml 如何使用XPath获取所有子元素,但仅限于某些元素,xml,xpath,Xml,Xpath,我一直在关注xml <element id="1"> <choice> <sequence> <element id="11"> <group> <element id="111"> <!-- ... -->
<element id="1">
<choice>
<sequence>
<element id="11">
<group>
<element id="111">
<!-- ... -->
</element>
</group>
</element>
<element id="12">
<element id="121">
<!-- ... -->
</element>
</element>
</sequence>
</choice>
</element>
当前节点和子节点之间可以是、和节点的任意组合。或者他们可能不是。如何获取当前但没有作为其子节点的节点的所有直接子节点
在一个节点的上下文中,我想编写如下内容:
/选择|序列|组*/元素
但它不起作用:我不确定我是否正确理解了这个问题。。。请尝试下面的XPath表达式,如果它不是您想要的,请告诉我:
./*[self::choice or self::sequence or self::group]/element
我认为只有再次使用选择根元素的xpath才能解决这个问题。例如,如果您通过xpath//element[@id=1]选择它,那么 选择你想要的。它将找到在它和“root”之间没有其他元素的元素
您可以在那里测试它-设置id=1,id=12….它似乎可以工作。但我的例子太简单了。我检查了真实的数据,但它不起作用。现在我将用我的真实数据给出一个例子。借助于您的表达式,我理解了,但是需要做什么,以便不仅节点,而且/元素|属性不起作用…/*[self::element或self::attribute]不起作用你是说这个//element/*[self::choice或self::sequence或self::group]/element |属性吗?是的。但在这种情况下,两者都可以对当前的直接子对象。而不是在他身边。
.//element[ancestor::element[1] = //element[@id="1"]]