xml - PLSQL XML 按标签和值放入表中
问题描述
在 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
我设法通过在查询中通过硬编码声明COLUMNS
and来获取特定值,但我想动态地执行此操作,因为 中的标签可能会有所不同。我试图将所有这些放入一个关联数组中。PATH
XMLTABLE
error
responseObject
解决方案
我想你可能想要这样的东西(在 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 节点的名称
推荐阅读
- javascript - 在 django 模板中使用 Javascript 变量的值来渲染模板上下文
- python - 根据来自其他工作表的输入对数据框应用过滤
- javascript - 创建具有回调的基于钩子的 setState
- c# - C# 到 Postman 转换示例
- jenkins - 在 Jenkins-Pipeline 中,如何使用 sshPut 复制文件夹的内容,而不是文件夹本身?
- seo - 如何正确设置每个页面的多个产品报价模式
- python - Python 中的幂集
- c# - MvvmLight:如何取消订阅“RaisePropertychanged”事件
- javascript - 自动更新表单中的输入字段,vue.js
- matlab - matlab中的多级多项逻辑回归