xml - 从 xmlns oracle 中提取值
问题描述
此代码返回 null,我如何从句点中提取 012019-122019
?
with qwe as (
select xmltype('<singleAggregatePaymentResponse xmlns:ns7="http://www.mtszn.kz/services/PersonCotracts/schemas">
<ns7:isEspPayer xmlns="http://www.mtszn.kz/services/PersonCotracts/schemas">true</ns7:isEspPayer>
<ns7:periods xmlns="http://www.mtszn.kz/services/PersonCotracts/schemas">
<period>122019</period>
<period>112019</period>
<period>102019</period>
<period>092019</period>
<period>082019</period>
<period>072019</period>
<period>062019</period>
<period>052019</period>
<period>042019</period>
<period>032019</period>
<period>022019</period>
<period>012019</period>
</ns7:periods>
</singleAggregatePaymentResponse>')xml
from dual
)
select
extractvalue(value(x101_1),'/period') iou,
xml
from qwe q,
table(xmlsequence(q.xml.extract('//period')))(+) x101_1
解决方案
extractvalue 和 xmlsequence 都已弃用。
您可以改为使用 xmltable 执行此操作:
select x.period
from qwe q
cross join xmltable(
xmlnamespaces(default 'http://www.mtszn.kz/services/PersonCotracts/schemas'),
'//period'
passing q.xml
columns period varchar2(6) path '.'
) x;
由于您的 XML 只有一个命名空间,我已将其声明为默认命名空间。有多个,或者只是如果你喜欢它,你可以命名它:
select x.period
from qwe q
cross join xmltable(
xmlnamespaces('http://www.mtszn.kz/services/PersonCotracts/schemas' as "ns7"),
'//ns7:period'
passing q.xml
columns period varchar2(6) path '.'
) x;
推荐阅读
- r - 不知道为什么我会收到此错误:“model.frame.default 中的错误......可变长度不同”?
- tensorflow - 在图像预处理方面,我在将 Tensorflow Python 转换为 Tensorflow.js 时遇到了麻烦。我错过了什么?
- java - Pdfbox Java docusign 签名消失
- java - 在线程完成其工作或在 android 中返回一个值后,在 MainActivity 中运行一行
- regex - 仅用于文件上传图像的正则表达式 - opencart
- reactjs - 为什么 `npm test` 只进行一项测试就需要这么长时间?
- firebase - 两个读取规则和第二个规则进行字段检查
- javascript - 动态插入的选择下拉字段无法正常工作
- android - 我想要片段中的android覆盖活动方法
- c - 你能在C中放置一个指向常规数组的动态指针吗