oracle11g:提取和计算XML元素
我将XML类型的数据存储在Oracle 11g数据库中。我的数据的粗略版本如下所示:oracle11g:提取和计算XML元素,xml,oracle,xquery,Xml,Oracle,Xquery,我将XML类型的数据存储在Oracle 11g数据库中。我的数据的粗略版本如下所示: <?xml version="1.0" encoding="UTF-8"?> <record> <record_number>12345</record_number> <record_type> book </record_type> </record> 指定列,其中每行包含格式良好的XML文件,其中包含许多标记和元素。我正
<?xml version="1.0" encoding="UTF-8"?>
<record>
<record_number>12345</record_number>
<record_type> book </record_type>
</record>
指定列,其中每行包含格式良好的XML文件,其中包含许多标记和元素。我正在努力提取和计算每个元素的出现次数。例如,我想知道XML标记包含“book”、“article”等元素的次数。但是,我不知道与标记关联的元素的完整列表
谢谢
I.具体取决于数据的存储方式,即表中是否有一行是一个类似于您发布的示例的XML文档,或者表中是否有一行是一个包含许多不同记录标记的XML文档最简单的方法是
SQL> ed
Wrote file afiedt.buf
1 with t as (select '<?xml version="1.0" encoding="UTF-8"?>
2 <record>
3 <record_number>12345</record_number>
4 <record_type> book </record_type>
5 </record>' xml
6 from dual
7 union all
8 select '<?xml version="1.0" encoding="UTF-8"?>
9 <record>
10 <record_number>6789</record_number>
11 <record_type> magazine </record_type>
12 </record>' xml
13 from dual)
14 select xmltype(t.xml).extract( '//record_number/text()' ) record_number,
15 xmltype(t.xml).extract( '//record_type/text()' ) record_type
16* from t
SQL> /
RECORD_NUMBER RECORD_TYPE
-------------------- ------------------------------
12345 book
6789 magazine
一旦你提取了数据,就可以很容易地计算或聚合数据。Justin,谢谢你的回复,不幸的是,我似乎没有意识到这一点。数据存储在“元数据”表中名为“XML类型”的列下,每一行都是一个精心编制的XML元数据文件是的,有几个记录标记。你能补充一些关于你的代码实际作用的细节吗?真的很感谢,很抱歉我对XQuery一无所知。。。
SQL> ed
Wrote file afiedt.buf
1 with t as (select '<?xml version="1.0" encoding="UTF-8"?>
2 <record>
3 <record_number>12345</record_number>
4 <record_type> book </record_type>
5 </record>' xml
6 from dual
7 union all
8 select '<?xml version="1.0" encoding="UTF-8"?>
9 <record>
10 <record_number>6789</record_number>
11 <record_type> magazine </record_type>
12 </record>' xml
13 from dual)
14 select xmltype(t.xml).extract( '//record_number/text()' ) record_number,
15 xmltype(t.xml).extract( '//record_type/text()' ) record_type
16* from t
SQL> /
RECORD_NUMBER RECORD_TYPE
-------------------- ------------------------------
12345 book
6789 magazine