oracle - oracle xml解析多行
问题描述
从 xml 查询不返回行。
我运行此查询但不返回行。
我的 xml 是:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:testata xmlns:ns0="http://siete">
<ns0:product>
<ns0:YEAR>2019</ns0:YEAR>
<ns0:PERIOD>1</ns0:PERIOD>
</ns0:product>
<ns0:product>
<ns0:YEAR>2019</ns0:YEAR>
<ns0:PERIOD>2</ns0:PERIOD>
</ns0:product>
</ns0:testata>
我的查询是
FROM XMLTABLE('/testata/product'
PASSING
(select xmltype(t.XML1) doc
from tb_test t)
COLUMNS
name varchar2(4) PATH './YEAR'
) xmlt
0 行
请帮我
解决方案
您的 XML 文档有一个命名空间,因此您需要在 XMLTable 调用中使用通配符,或者 - 最好 - 提供相同的命名空间信息和前缀:
-- CTE for sample data
with tb_test (xml1) as (select '<?xml version="1.0" encoding="UTF-8"?>
<ns0:testata xmlns:ns0="http://siete">
<ns0:product>
<ns0:YEAR>2019</ns0:YEAR>
<ns0:PERIOD>1</ns0:PERIOD>
</ns0:product>
<ns0:product>
<ns0:YEAR>2019</ns0:YEAR>
<ns0:PERIOD>2</ns0:PERIOD>
</ns0:product>
</ns0:testata>' from dual
)
-- actual query
select x.year
from tb_test t
cross join xmltable(
xmlnamespaces('http://siete' as "ns0"),
'/ns0:testata/ns0:product'
passing xmltype(t.xml1)
columns year number path 'ns0:YEAR'
) x;
YEAR
----------
2019
2019
推荐阅读
- python - 无法确定 youtube 导出页面中的 iframe 或窗口(Selenium Python)
- javascript - 错误处理 kotlin-stdlib-1.4.0.jar - 反应原生
- apache-flink - 将行时间与表 api 一起使用时出现 NullPointerException
- php - PHP preg_replace() 返回带有隐藏控制字符的空字符串
- amazon-web-services - 测试 S3 智能分层
- google-apps-script - 如何在 Google 日历附加卡中动态生成复选框?
- android - 未找到击键文件。#扑
- android - 如何禁用或停止坐标布局滚动
- python - 如何制作一个机器人,在我们加入特定语音频道时赋予角色并在离开时移除
- django - Django 项目不在 Cpanel 中托管