<sample-test-data-history xmlns="dmotorworks.com/sample-test-data-history"> <payPaymentCode>
<V Idx="1">CASH</V>
</payPaymentCode>
<StatusCode>C98</StatusCode>
<Type>
<V Idx="1">Cat</V>
<V Idx="2">Mouse</V>
<V Idx="3">Tree</V>
</Type>
<totMiscCost>
<V Idx="1">100.00</V>
<V Idx="2">150.00</V>
<V Idx="3">200.00</V>
</totMiscCost>
</sample-test-data-history>
从此xmlns中,我需要获取文本为“ cat”的数组的idx值,并基于该idx值,我需要从具有相同idx值的下一个数组属性获取totMiscCost
答案 0 :(得分:0)
您可以使用xpath()
来使用XPath表达式提取XML的一部分。它将返回一个匹配项数组,因此如果需要标量,则需要选择所需的索引。
在最后一个可选参数xpath()
中,可以给定一个to元素的数组,该数组定义了名称空间映射。
在您的情况下,XPath表达式获取文本totMiscCost/V
,其中属性Idx
的值等于具有相同名称Type/V
的属性的值。请注意,必须为元素添加名称空间别名作为前缀。
SELECT (xpath('(//dns:totMiscCost/dns:V[@Idx=//dns:Type/dns:V[text()="Cat"]/@Idx]/text())[1]',
nmuloc,
ARRAY[ARRAY['dns',
'dmotorworks.com/sample-test-data-history']]))[1]
FROM elbat;