0
我目前正在Oracle 11g中使用Oracle PL/SQL。 我有兩種從我工作的XML。將與PL/SQL相同級別的兩個節點關聯起來
下面是我迄今爲止完成的兩種類型的XML和提取的示例。
TYPE 1 XML:
<ListItens1 xmlns=「xpto」>
<item id=」1」>
<product type=」fruit」>
<model> Apple </model>
<date>02/19/2013</date>
<year>2013</year>
</product>
</item >
<item id=」2」>
<product type=」notebook」>
<model> Vostro </model>
<date>02/19/2013</date>
<year> 2013 </year>
</product>
</item>
</ListItens1>
TYPE 2 XML:
<ListItens2 xmlns=「xpto」>
<item>1</item>
<product type=」fruit」>
<model> Apple </model>
<date>02/19/2013</date>
<year>2013</year>
</product>
<item>2</item>
<product type=」notebook」>
<model> Vostro </model>
<date>02/19/2013</date>
<year> 2013 </year>
</product>
<ListItens2>
這些XML被插入到具有一個稱爲類型XMLTYPE的歸檔字段的表。
CREATE TABLE XML_PRODUCT (ID_XML NUMBER, DATA DATE, ARCHIVE XMLType);
當XML是1型我做這樣沒有問題的:
SELECT
ExtractValue(value(NFe) , '/item/@id', 'xmlns="xpto') ID,
ExtractValue(value(NFe) , '/item/product/@type', 'xmlns="xpto') TYPE,
ExtractValue(value(NFe) , '/item/product/model', 'xmlns="xpto') MODEL,
ExtractValue(value(NFe) , '/item/product/date'', 'xmlns="xpto') DATE,
ExtractValue(value(NFe) , '/item/product/year'', 'xmlns="xpto') YEAR,
FROM XML_PRODUCT,
TABLE(XMLSequence(Extract (ARCHIVE, '/listItens1/item', 'xpto'))) NFe
WHERE ID_XML = 1;
它導致:
但對於2型我不不知道如何處理ITEM和PRODUCT之間的關聯,因爲它們在XML中處於相同的層次結構級別。
可以在不修改XML的情況下提取與項目關聯的產品數據?