【问题标题】:I have to extract data from xml file and insert it into a table我必须从 xml 文件中提取数据并将其插入到表中
【发布时间】:2016-05-30 05:53:00
【问题描述】:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:rocs.001.001.06">
<pokus>
 <RchEntry>
      <PstlAdr>
      <Ctry>IT</Ctry>
     <AdrLine>VIA SARDEGNA, 12</AdrLine>
      <AdrLine>00019TIVOLI RM</AdrLine>
      </PstlAdr>
    </RchEntry>
    <RchEntry>
     <PstlAdr>
      <Ctry>IT1</Ctry>
      <AdrLine>VIA SARDEGNA1, 12</AdrLine>
      <AdrLine>00019TIVOLI11 RM</AdrLine>
      </PstlAdr>
    </RchEntry>
    </pokus>
</Document>

这是我需要从中提取值的 xml 文件。每个 RchEntry 被视为一行。如何使用 plsql 提取 AdrLine 标签的值?

【问题讨论】:

    标签: xml plsql xml-parsing


    【解决方案1】:
    WITH t AS
      (SELECT column_value
      FROM TABLE(xmlsequence(extract(xmltype('<Document>
    <rocs.001.001.06> 
    <RchEntry>      
    <PstlAdr>      
    <Ctry>IT</Ctry>     
    <AdrLine>VIA SARDEGNA, 12</AdrLine>      
    <AdrLine>00019TIVOLI RM</AdrLine>      
    </PstlAdr>    
    </RchEntry>    
    <RchEntry>     
    <PstlAdr>      
    <Ctry>IT1</Ctry>      
    <AdrLine>VIA SARDEGNA1, 12</AdrLine>      
    <AdrLine>00019TIVOLI11 RM</AdrLine>      
    </PstlAdr>    
    </RchEntry>    
    </rocs.001.001.06>
    </Document>'),'/Document/rocs.001.001.06/*')))
      )
    SELECT t1.*
    FROM t,
      xmltable('/RchEntry' passing t.column_value columns Ctry VARCHAR2(100) path '/RchEntry/PstlAdr/Ctry', AdrLine1 VARCHAR2(100) path '/RchEntry/PstlAdr/AdrLine[1]', AdrLine2 VARCHAR2(100) path '/RchEntry/PstlAdr/AdrLine[2]') t1;
    

    【讨论】:

    • 是否可以在不从xml文件中删除命名空间的情况下进行提取?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2016-08-18
    • 2010-12-02
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多