【发布时间】:2017-08-28 10:02:19
【问题描述】:
在这个 XML 示例中,我想在使用 XPath 时获取attribute Attr_2 的值(显示str1234)。
<ROOT>
<ELEM_1 Attr_1 = "A" Attr_2 = "str1234" />
<ELEM_1 Attr_1 = "B" Attr_2 = "str5678" />
</ROOT>
【问题讨论】:
在这个 XML 示例中,我想在使用 XPath 时获取attribute Attr_2 的值(显示str1234)。
<ROOT>
<ELEM_1 Attr_1 = "A" Attr_2 = "str1234" />
<ELEM_1 Attr_1 = "B" Attr_2 = "str5678" />
</ROOT>
【问题讨论】:
XPath 是 '/ROOT/ELEM_1[@Attr_1 = "A"]/@Attr_2'
但是,如果您想在 Oracle DB 中进行操作,则必须使用 xmltable 或 xmlquery。
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 '.');
【讨论】:
试试下面
/ROOT/ELEM_1[1] -> it will return str1234
/ROOT/ELEM_1[2] -> it will return str5678
或
(/ROOT/ELEM_1)[1] -> it will return str1234
(/ROOT/ELEM_1)[2] -> it will return str5678
或
/ROOT/ELEM_1[1]/@Attr_1 -> it will return A
/ROOT/ELEM_1[2]/@Attr_1 -> it will return B
或
/ROOT/ELEM_1[@Attr_1='A']/@Attr_2 -> It will return str1234
/ROOT/ELEM_1[@Attr_1='B']/@Attr_2 -> It will return str5678
希望对你有帮助:)
【讨论】: