【问题标题】:PLSQL XML into table by tag and valuePLSQL XML 按标签和值放入表中
【发布时间】:2018-10-14 10:50:51
【问题描述】:

在 PL/SQL 中,是否可以将 XML 转换为按标签和值拆分的表,而无需对任何列进行硬编码?

示例 XML:

<responseObject>
    <error>That is not a valid request</error>
    <errorCode>A11</errorCode>
    <value>A</value>
</responseObject>

示例输出:

Tag                        Value
------------------------------------------------------
error                      That is not a valid request
errorCode                  A11
value                      A

我设法通过硬编码errorXMLTABLE 查询中声明COLUMNSPATH 来获取特定值,但我想动态执行此操作,因为responseObject 中的标签可能会有所不同。我正在尝试将所有这些放入关联数组中。

【问题讨论】:

    标签: xml plsql xmltable


    【解决方案1】:

    我认为您可能想要这样的东西(适用于 Oracle 11g):

    DECLARE
      lxml xmltype;
    begin
      lxml := 
      xmltype('<responseObject>
                 <error>That is not a valid request</error>
                 <errorCode>A11</errorCode>
                 <value>A</value>
               </responseObject>');
    
      FOR test IN (
        select tag,
               VALUE
        FROM   xmltable('responseObject/*'
                 passing lxml
                 columns
                   tag VARCHAR2(128) path 'name()',
                   VALUE VARCHAR2(128) path '.'
               ) t
      )
      LOOP
        dbms_output.put_line(test.tag || ' - ' || test.value);
      END LOOP;
    end;
    

    我基本上适应了这里提供的答案:https://stackoverflow.com/a/38225058/1271743

    并利用 name() 函数检索 XML 节点的名称

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 2021-04-10
      • 2016-08-31
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2017-11-10
      相关资源
      最近更新 更多