2017-08-28 77 views
1

在此XML示例中,我想要在使用XPath的Attr_1="A"(显示str1234)时获取值attributeAttr_2在attribute2值(使用XPath)时获取attribute1值

<ROOT> 
 
    <ELEM_1 Attr_1 = "A" Attr_2 = "str1234" /> 
 
    <ELEM_1 Attr_1 = "B" Attr_2 = "str5678" /> 
 
</ROOT>

+0

如果我的答案有助于解决您的问题,请点击我的答案左侧的正确标记接受答案,正下方的上下选票。请投票了..它将真正帮助我和其他人谁将在未来提及这个问题..这是如何stackoverflow工作:) ...参考: - https://meta.stackexchange.com/questions/5234/如何接受答案工作 –

回答

0

的XPath这是'/ROOT/ELEM_1[@Attr_1 = "A"]/@Attr_2'

但是,如果你想在Oracle数据库做你必须使用xmltablexmlquery

select * from xmltable('ROOT/ELEM_1[@Attr_1 = "A"]/@Attr_2' passing xmltype(' 
<ROOT> 
    <ELEM_1 Attr_1 = "A" Attr_2 = "str1234" /> 
    <ELEM_1 Attr_1 = "B" Attr_2 = "str5678" /> 
      <ELEM_1 Attr_1 = "A" Attr_2 = "next_value" /> 
</ROOT>') 
columns attr2 varchar2(100) path '.'); 
0

尝试以下

/ROOT/ELEM_1[1] -> it will return str1234 
/ROOT/ELEM_1[2] -> it will return str5678 

OR

(/ROOT/ELEM_1)[1] -> it will return str1234 
(/ROOT/ELEM_1)[2] -> it will return str5678 

OR

/ROOT/ELEM_1[1]/@Attr_1 -> it will return A 
/ROOT/ELEM_1[2]/@Attr_1 -> it will return B 

OR

/ROOT/ELEM_1[@Attr_1='A']/@Attr_2 -> It will return str1234 
/ROOT/ELEM_1[@Attr_1='B']/@Attr_2 -> It will return str5678 

希望它会帮助你:)

+0

thx为您的答复,但在你的答案为什么它返回attr_2的值而不是attr_1没有在XPATH中指定的值? –

+0

更新了我的回答 –

+0

发生了什么事情,它不适合你? ..你只是不接受答案 –