首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xpath使用本地名称()查找特定元素值的属性值

Xpath使用本地名称()查找特定元素值的属性值
EN

Stack Overflow用户
提问于 2021-04-07 15:23:47
回答 1查看 183关注 0票数 0

我有如下所述的有效载荷。

代码语言:javascript
复制
<A xmlns:com="http://www.example.com/xml/xmlns/example">
    <B>
        <X appCode="001">xxx</X>
        <Y appId="0002">yyy</Y>
    </B>
    <C>
        <D>
            <E>
                <F id="1" code="001">test-1</F>
                <F id="3" code="002">test-2</F>
                <F id="4" code="003">test-3</F>
                <F id="5" code="004">test-4</F>
            </E>
        </D>
    </C>
</A>

我需要得到A/C/D/E/F‘’test 2‘的id值。此外,我还必须使用local-name()来避免名称空间。尝试了以下步骤,并得到了以下结果。

//* local()= 'C'/* local-name() = 'D'/* local-name() = 'E'/* local-name() = 'F‘

代码语言:javascript
复制
<F id="1" code="001">test-1</F>
<F id="3" code="002">test-2</F>
<F id="4" code="003">test-3</F>
<F id="5" code="004">test-4</F>

如何找到'test-2‘的id值,即3?(注意:我在wso2 EI属性中介中使用这个)

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-07 15:59:02

好吧,举你的例子,表达式:

代码语言:javascript
复制
//*[local-name() = 'F'][. = 'test-2']/@id

将返回3

但是,需要指出的是,名称空间是要使用的,而不是避免的。在样式表中声明名称空间,为其分配前缀,并使用前缀来处理元素。

还请注意,在给定的示例中,名称空间声明是完全多余的。你可以简单地使用:

代码语言:javascript
复制
"//F[. = 'test-2']/@id"

或者说更有效率:

代码语言:javascript
复制
"/A/C/D/E/F[. = 'test-2']/@id"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66989182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档