oracle解析xml完成版第二次修改

來源:互聯網
上載者:User

標籤:

 

其實XML字串就好像是ORACLE中的外部表格,因此Oracle對 解析XML字串一些規則要求非常嚴格。XML字串提供的資料就是一張表,所以Oracle必須提供跟 xml資料一致的列頭

 

 

 

 

 

樣本一

SELECT * FROM XMLTABLE(‘$B/DEAL_BASIC/USER_DEAL_INFO‘ PASSING

    XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&xml‘) AS B   

    COLUMNS USER_DEAL_ID VARCHAR2(50) PATH    ‘/USER_DEAL_INFO/USER_DEAL_ID‘,

    DEAL_INURE_TIME VARCHAR2(50)    PATH    ‘/USER_DEAL_INFO/DEAL_INURE_TIME‘,

    DEAL_EXPIRE_TIME VARCHAR2(50)   PATH    ‘/USER_DEAL_INFO/DEAL_EXPIRE_TIME‘,

    DEAL_CREATE_TIME VARCHAR2(50)   PATH    ‘/USER_DEAL_INFO/DEAL_CREATE_TIME‘);

   

   

   

<DEAL_BASIC>

   <USER_DEAL_INFO>

   <USER_DEAL_ID>1000100001</USER_DEAL_ID>

   <DEAL_INURE_TIME>20081130</DEAL_INURE_TIME>

   <DEAL_EXPIRE_TIME>30000101</DEAL_EXPIRE_TIME>

   <DEAL_CREATE_TIME>20081130</DEAL_CREATE_TIME>

   </USER_DEAL_INFO>     

</DEAL_BASIC>

 

xml version="1.0" 指定xml的版本

encoding="gb2312" 指定xml字串的字元編碼 

以上 < >中的內容可以省略

 

  

 

 

 

 

樣本二(單行正常顯示)

SELECT * FROM XMLTABLE(‘$B/ROW‘ PASSING

    XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&xml‘) AS B

    COLUMNS

    TP_ID   NUMBER              PATH        ‘/ROW/TP_ID‘,

    TP_NAME VARCHAR2(50)        PATH        ‘/ROW/TP_NAME‘,

    TP_PARENTID NUMBER          PATH        ‘/ROW/TP_PARENTID‘,

    TP_SNAME VARCHAR2(50)       PATH        ‘/ROW/TP_SNAME‘);

      

   

<ROW>

  <TP_ID>112</TP_ID>

  <TP_NAME>ORACLE</TP_NAME>

  <TP_PARENTID>0</TP_PARENTID>

  <TP_SNAME>R</TP_SNAME>

</ROW>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

樣本三 (單行正常顯示,字元不加單引號。資料反寫之後 字元自動添加 單引號)

SELECT * FROM XMLTABLE(‘$B/ROW‘ PASSING

    XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&xml‘) AS B

    COLUMNS

    TP_ID   NUMBER              PATH        ‘/ROW/TP_ID‘,

    TP_NAME VARCHAR2(50)        PATH        ‘/ROW/TP_NAME‘,

    TP_PARENTID NUMBER          PATH        ‘/ROW/TP_PARENTID‘,

    TP_SNAME VARCHAR2(50)       PATH        ‘/ROW/TP_SNAME‘);

      

   

<ROW>

  <TP_ID>112</TP_ID>

  <TP_NAME>電腦網路技術</TP_NAME>

  <TP_PARENTID>0</TP_PARENTID>

  <TP_SNAME>R</TP_SNAME> 

</ROW>

 

 

--反寫語句如下:

insert into XMLTABLE (TP_ID, TP_NAME, TP_PARENTID, TP_SNAME) values (112, ‘電腦網路技術‘, 0, ‘R‘);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

樣本四 (xml檔案中字元不能添加單引號  ’ 和 雙引號 ")-

SELECT * FROM XMLTABLE(‘$B/DEAL_BASIC/USER_DEAL_INFO‘ PASSING

   XMLTYPE(‘ &XML‘) AS B

    COLUMNS USER_DEAL_ID NUMBER         PATH    ‘/USER_DEAL_INFO/ROW_ID‘,

    DEAL_INURE_TIME VARCHAR2(50)        PATH    ‘/USER_DEAL_INFO/ROW_TIME‘,

    DEAL_EXPIRE_TIME VARCHAR2(50)       PATH    ‘/USER_DEAL_INFO/ROW_NAME‘);

   

   

   

<DEAL_BASIC>    

   <USER_DEAL_INFO>

   <ROW_ID>1000100001</ROW_ID>

   <ROW_TIME>ORACLE</ROW_TIME>

   <ROW_NAME>30000101</ROW_NAME>

   </USER_DEAL_INFO>

     

   <USER_DEAL_INFO>

   <ROW_ID>1000100001</ROW_ID>

   <ROW_TIME>"ORACLE"</ROW_TIME>

   <ROW_NAME>30000101</ROW_NAME>

   </USER_DEAL_INFO>       

</DEAL_BASIC> 

 

--反寫語句如下:  insert into XMLTABLE (USER_DEAL_ID, DEAL_INURE_TIME, DEAL_EXPIRE_TIME)  values (‘1000100001‘, ‘"ORACLE"‘, ‘30000101‘);

 

 

樣本四(多行正常顯示)

SELECT * FROM XMLTABLE(‘$B/ORDERLIST/ORDER‘ PASSING

    XMLTYPE(‘ &XML‘) AS B

    COLUMNS ORDERID    NUMBER     PATH    ‘/ORDER/ORDERID‘,

    ORDERNUMBER        NUMBER     PATH    ‘/ORDER/ORDERNUMBER‘,

    ORDERPRICEE        NUMBER     PATH    ‘/ORDER/ORDERPRICE‘);

 

<ORDERLIST>

        <ORDER>

        <ORDERID>1</ORDERID>

        <ORDERNUMBER>857544544</ORDERNUMBER>

        <ORDERPRICE>54</ORDERPRICE>

        </ORDER>

       

        <ORDER>

        <ORDERID>2</ORDERID>

        <ORDERNUMBER>858544544</ORDERNUMBER>

        <ORDERPRICE>63</ORDERPRICE>

        </ORDER>

       

        <ORDER>

        <ORDERID>3</ORDERID>

        <ORDERNUMBER>454854555</ORDERNUMBER>

        <ORDERPRICE>781</ORDERPRICE>

        </ORDER>       

</ORDERLIST>

 

 

oracle解析xml完成版第二次修改

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.