列中的XML查询数据

时间:2017-03-23 14:33:18

标签: xml plsql extract

我有一个像这样的xml:我希望以主标记<queue></queues>之间的每个字段连续显示的方式提取值。 我找到了很多关于如何选择&#34; select extract&#34;但没有像我的xml(其中每个字段都没有被调用 - 即 - &#34;值&#34;但是值,所以我只是不知道如何阅读它们。

    <?xml version="1.0" encoding="UTF-8"?>
<queues>
    <queue>
        <Field name="queue_date">2016-09-20</Field>
        <Field name="queue_id">6180</Field>
        <Field name="queue_activate_time"/>
        <Field name="queue_deactivate_time"/>
        <Field name="provider_id">19</Field>
        <Field name="provider_source">Nome Cognome</Field>
        <Field name="provider_ext_id">ncognome</Field>
        <Field name="provider_pool">18</Field>
        <Field name="provider_timezone">Central Europe</Field>
        <Field name="calendar_start_time">08:00:00</Field>
        <Field name="calendar_end_time">17:00:00</Field>
    </queue>
</queues>

1 个答案:

答案 0 :(得分:0)

select * from xmltable('//queues/queue/Field' passing xmltype('<?xml version="1.0" encoding="UTF-8"?>
<queues>
    <queue>
        <Field name="queue_date">2016-09-20</Field>
        <Field name="queue_id">6180</Field>
        <Field name="queue_activate_time"/>
        <Field name="queue_deactivate_time"/>
        <Field name="provider_id">19</Field>
        <Field name="provider_source">Nome Cognome</Field>
        <Field name="provider_ext_id">ncognome</Field>
        <Field name="provider_pool">18</Field>
        <Field name="provider_timezone">Central Europe</Field>
        <Field name="calendar_start_time">08:00:00</Field>
        <Field name="calendar_end_time">17:00:00</Field>
    </queue>
</queues> ')
columns 
   name varchar2(100) path './@name'
 , value varchar2(100) path'./text()'

)