在Oracle中查询XML

时间:2018-07-31 08:50:39

标签: sql xml oracle

我有一个表MyTable,其中包含三个字段-FIELD1,FIELD2和FIELD3。我收到以下XML。我们可以使用SQL查询将此xml转换为表格形式吗? [我知道我们可以转换标记名称为field_name且标记值为字段值的xml,但是此处的xml格式不同。在这里,字段名称是标签的标签值,而字段值是标签的值

<?xml version="1.0" encoding="UTF-8"?>
<body>
   <parameters>
      <parameter>
         <key>Field1</key>
         <value>Field1_value</value>      
      </parameter> 
      <parameter>
         <key>Field2</key>
         <value>Field2_value</value>      
      </parameter>
      <parameter>
         <key>Field3</key>
         <value>Field3_value</value>      
      </parameter>
   <parameters> 
</body>

1 个答案:

答案 0 :(得分:1)

您可以将XMLQuery或XMLTable与Xpath结合使用,Xpath可以为每个键值选择参数和过滤器:

<td>
  <span editable-number="profile.ZipCode" 
        e-min="0" e-max="100" 
        e-ng-model="profile.ZipCode" 
        e-form="editableForm" 
        e-ng-blur="zipChange($data)" 
        onbeforesave="checkNumber($data)" 
        e-name="ZipCode">
    {{profile.ZipCode}}
  </span>
</td>

具有XML(具有固定的结束标记!)的演示通过XMLType构造函数调用作为字符串文字传递:

select *
from xmltable ('/body/parameters'
  passing <your XML document>
  columns field1 varchar2(20) path 'parameter[key="Field1"]/value',
          field2 varchar2(20) path 'parameter[key="Field2"]/value',
          field3 varchar2(20) path 'parameter[key="Field3"]/value'
);