Xpath 使用 local-name() 查找特定元素值的属性值
Xpath to find attribute value for a particular element value using local-name()
我有如下所述的有效负载。
<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-name() = 'C']/* [local-name() = 'D']/* [local-name() =
'E']/* [local-name() = 'F']
<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 属性 调解器中使用它)
提前致谢!
嗯,给你的例子,表达式:
//*[local-name() = 'F'][. = 'test-2']/@id
将 return 3
。
不过,需要说明的是,命名空间是要用的,不是回避的。在您的样式表中声明命名空间,为其分配一个前缀,并使用该前缀来寻址元素。
另请注意,在给定的示例中,命名空间声明完全是多余的。您可以简单地使用:
"//F[. = 'test-2']/@id"
或更有效一点:
"/A/C/D/E/F[. = 'test-2']/@id"
我有如下所述的有效负载。
<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-name() = 'C']/* [local-name() = 'D']/* [local-name() = 'E']/* [local-name() = 'F']
<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 属性 调解器中使用它)
提前致谢!
嗯,给你的例子,表达式:
//*[local-name() = 'F'][. = 'test-2']/@id
将 return 3
。
不过,需要说明的是,命名空间是要用的,不是回避的。在您的样式表中声明命名空间,为其分配一个前缀,并使用该前缀来寻址元素。
另请注意,在给定的示例中,命名空间声明完全是多余的。您可以简单地使用:
"//F[. = 'test-2']/@id"
或更有效一点:
"/A/C/D/E/F[. = 'test-2']/@id"