Как извлечь этот XML - PullRequest
       9

Как извлечь этот XML

0 голосов
/ 29 марта 2019

Я хочу извлечь XML-файл (XML_DATA):

XML:

-<XP6>
 +<INFO_1>
 +<INFO_2>
 +<INFO_3>
 -<Prdct>
  -<Prdct_row>
   .....
   <LILBFLO>Samsung,corp. </LILBFLO> <--value

Я пробовал это, но это не работает:

EXTRACTVALUE(XML_DATA,'/Prdct/Prdct_row/LILBFLO/text()')

Как правильно использовать extractvalue?

1 Ответ

1 голос
/ 29 марта 2019

Предполагая, что символы +/- указывают на свернутые узлы, и ваш XML на самом деле выглядит как образец в этом CTE, вам просто нужно включить корневой путь в путь:

with your_table (xml_data) as (
  select xmltype('<XP6>
 <INFO_1/>
 <INFO_2/>
 <INFO_3/>
 <Prdct>
  <Prdct_row>
   <LILBFLO>Samsung,corp. </LILBFLO>
  </Prdct_row>
 </Prdct>
</XP6>') from dual
)
select EXTRACTVALUE(XML_DATA,'/XP6/Prdct/Prdct_row/LILBFLO/text()')
from your_table;

EXTRACTVALUE(XML_DATA,'/XP6/PRDCT/PRDCT_ROW/LILBFLO/TEXT()')
------------------------------------------------------------
Samsung,corp. 

Но extractvalue() функция устарела, поэтому вместо нее следует использовать XMLQuery:

select XMLQuery('/XP6/Prdct/Prdct_row/LILBFLO/text()' passing XML_DATA returning content)
from your_table;

XMLQUERY('/XP6/PRDCT/PRDCT_ROW/LILBFLO/TEXT()'PASSINGXML_DATARETURNINGCONTENT)  
--------------------------------------------------------------------------------
Samsung,corp. 
...