我正在尝试使用udf来解析我的xml文档。如果我运行以下命令,它就会工作:
select xpath_string('<Application><applicationId>test</applicationId></Application>', '//applicationId') as id
from my_table limit 2;
输出为:
OK
test
test
如果现在运行以下代码但添加了命名空间,则无法解析xml:
select xpath_string('<Application xmlns="http://domain.com/test"><applicationId>test</applicationId></Application>', '//applicationId') as id
from my_table limit 2;
我只会得到空字符串。
我做错什么了吗?或者我应该改进xpath吗?
谢谢!
1条答案
按热度按时间prdp8dxp1#
第二个xml引入了默认名称空间,它不仅影响声明默认名称空间的元素,还影响所有没有前缀的子元素,包括
applicationId
元素:通常,你需要Map一个前缀,比如
d
,并在xpath中使用该前缀://d:applicationId
. 我不熟悉您使用的技术,因此不确定如何以及是否支持这种方法。以下是纯xpath 1.0替代方案:
或者忽略命名空间(如果愿意):