【问题标题】:How to extract this XML如何提取此 XML
【发布时间】:2019-03-29 15:26:28
【问题描述】:

我想提取一个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

【问题讨论】:

    标签: sql xml oracle extract


    【解决方案1】:

    假设 +/- 符号表示折叠节点,并且您的 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. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 2019-07-22
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 2021-02-13
      相关资源
      最近更新 更多