gpt4 book ai didi

xml - 如何使用 XPath 轴编写与命名空间无关的 XPath 查询

转载 作者:行者123 更新时间:2023-12-03 17:33:59 26 4
gpt4 key购买 nike

假设我有下面显示的 XML:

<ns1:test xmlns:ns1="http://www.w3.org/TR/html3/"  xmlns:UML="http://www.w3.org/TR/html4/">
<UML:Class name="test1">
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test2" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test3" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="RCS"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test4" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="DFK"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test5" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="DSO"/>
</UML:ModelElement.stereotype>
</UML:Class>
</ns1:test>

如何编写一个与 namespace 无关的 XPath 查询,该查询将获取所有包含属性名称等于“AFV”的“Stereotype”元素的“Class”元素?

如果没有任何命名空间,我将使用所谓的 Xpath Axes,我的查询将如下所示: //Class[descendant::Stereotype[@name='AFV']]
XPath 查询应返回:
<UML:Class name="test1">
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test2" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>

最佳答案

您可以使用 XPath local-name()通过元素的本地名称匹配忽略命名空间的函数:

//*[local-name()='Class'][descendant::*[local-name()='Stereotype' and @name='AFV']]

关于xml - 如何使用 XPath 轴编写与命名空间无关的 XPath 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com