sql - 如何在 Oracle 中解析 xml 数组
问题描述
我有一个带有帐户数组的 xml,如果该数组有 1 个帐户,则此代码工作正常,但如果该数组有多个帐户,则此代码不起作用。请帮忙。
select x.acc_num --into res
from xmltable (
xmlnamespaces (
default 'http://www.eubank.kz/Bis.Info.ExternalServices.Bank',
'http://schemas.xmlsoap.org/soap/envelope/' AS "s",
'http://www.w3.org/2001/XMLSchema-instance' as "i",
'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as "a"
),
's:Envelope/s:Body/TryGetCardAccountsResponse/TryGetCardAccountsResult/IbanList'
passing xmltype(
'<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<TryGetCardAccountsResponse
xmlns="http://www.eubank.kz/Bis.Info.ExternalServices.Bank">
<TryGetCardAccountsResult
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<IbanList
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:string>KZ199480018A00166666</a:string>
<a:string>KZ519480061A02366666</a:string>
</IbanList>
<Status>Ok</Status>
</TryGetCardAccountsResult>
</TryGetCardAccountsResponse>
</s:Body>
</s:Envelope>'
)
columns
acc_num varchar2(255) path 'a:string'
) x;
解决方案
尝试:
select x.acc_num --into res
from xmltable (
xmlnamespaces (
default 'http://www.eubank.kz/Bis.Info.ExternalServices.Bank',
'http://schemas.xmlsoap.org/soap/envelope/' AS "s",
'http://www.w3.org/2001/XMLSchema-instance' as "i",
'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as "a"
),
's:Envelope/s:Body/TryGetCardAccountsResponse/TryGetCardAccountsResult/IbanList/a:string'
passing xmltype(
'<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<TryGetCardAccountsResponse
xmlns="http://www.eubank.kz/Bis.Info.ExternalServices.Bank">
<TryGetCardAccountsResult
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<IbanList
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:string>KZ199480018A00166666</a:string>
<a:string>KZ519480061A02366666</a:string>
</IbanList>
<Status>Ok</Status>
</TryGetCardAccountsResult>
</TryGetCardAccountsResponse>
</s:Body>
</s:Envelope>'
)
columns
acc_num varchar2(255) path '.'
) x;
推荐阅读
- javascript - 我正在尝试使用 puppeteer 在页面上自动登录,一旦我在下一页上登录,我想单击下一页上的按钮
- java - 转换为浮点数/从浮点数转换时 BigDecimal 不保留舍入值
- html - Angular Material:自动缩放元素的高度
- ansible - Ansible - vmware_guest 模块创建 windows 服务器机器
- python - 我如何使用移动平均线的定义,编写 Python 代码(使用 for 循环)来计算一个称为 ma 的 n 周期移动平均线列表?
- javascript - DateTimePicker 的问题以及如何将所选日期传递给另一个函数?
- decentralized-identity - 如何确保可验证的凭证颁发者是合法的颁发者?
- python - Django models.TextChoices 不可索引?
- r - 将 FlexTable 中的数字与 R 中的十进制数字对齐
- postgresql - 有没有办法检查一列是否在 postgresql 中具有正确的日期格式?