Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml SQL XPath查询_Xml_Oracle_Xpath - Fatal编程技术网

Xml SQL XPath查询

Xml SQL XPath查询,xml,oracle,xpath,Xml,Oracle,Xpath,给定以下XML数据结构: <root> <a attr="abcd"> <b> test1</b> <b> test2 </b> <b> test3 </b> </a> <a attr="zyx"> <b> test1 </b> <b> test2 </b> <b> test3 </b> <

给定以下XML数据结构:

<root>
<a attr="abcd">
 <b> test1</b>
 <b> test2 </b>
 <b> test3 </b>
</a>
<a attr="zyx">
 <b> test1 </b>
 <b> test2 </b>
 <b> test3 </b>
</a>
<a attr="gjui">
 <b>test1 </b>
</a>
</root>
我遇到的问题是,根有多个孩子

SELECT xtab.my_attr, xtab.my_attr_values
FROM my_table jx, xmltable('/root/a' 
PASSING jx.field_xml
COLUMNS my_attr path '@attr', 
my_attr_values path '/a/b')xtab;
返回

abcd   NULL
zyx    NULL
gjui   test1

遍历子节点并拉入子节点的父节点解决了此问题

SELECT xtab.my_attr, xtab.my_attr_values
FROM my_table jx, xmltable('for $i in /root/a/b
return element r {
$i/../@attr,
$i/.
}' 
PASSING jx.field_xml
COLUMNS my_attr path '@attr', 
my_attr_values path 'b')xtab;

这甚至不是有效的XML。请使用正确的示例更新。请参阅
SELECT xtab.my_attr, xtab.my_attr_values
FROM my_table jx, xmltable('for $i in /root/a/b
return element r {
$i/../@attr,
$i/.
}' 
PASSING jx.field_xml
COLUMNS my_attr path '@attr', 
my_attr_values path 'b')xtab;