首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql:使用xpath从XML列中提取数据

Postgresql:使用xpath从XML列中提取数据
EN

Stack Overflow用户
提问于 2016-01-29 09:14:46
回答 1查看 5K关注 0票数 4

我一直试图从XML中提取值,就像@用一个可接受的答案回答了几次一样,但它对我不起作用:

根据这个职位这个职位,这应该可以工作,但是我只得到一个空的结果:

代码语言:javascript
复制
WITH x AS ( SELECT
   '<Attributes xmlns="http://www.gis34.dk">
        <bemaerkning displayName="Bemærkning">Beatrix</bemaerkning>
        <billede displayName="Billede">https://vignette.wikia.nocookie.net/killbill/images/3/39/The_Bride.jpg</billede>
    </Attributes>'::xml AS t
)

SELECT xpath('/Attributes/bemaerkning/text()', t) as comment
FROM   x

结果:(预期:{我的评论})

代码语言:javascript
复制
comment
xml[]
-------
{}

我的数据库版本:

代码语言:javascript
复制
PostgreSQL 9.1.3 on x86_64-unknown-linux-gnu, compiled by gcc-4.5.real (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2, 64-bit

有人有主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-29 09:20:44

XML定义了一个名称空间,该名称空间必须在xpath表达式中使用。

代码语言:javascript
复制
SELECT xpath('/g:Attributes/g:bemaerkning/text()', t, array[array['g','http://www.gis34.dk']]) as comment
FROM   x

注意第三个参数传递名称空间映射的二维数组。

xpath()函数返回一个元素数组。如果您知道只获得一个元素(或只需要第一个元素),则只需返回数组的第一个元素:

代码语言:javascript
复制
SELECT (xpath('/g:Attributes/g:bemaerkning/text()', t, array[array['g','http://www.gis34.dk']])[1] as comment
FROM   x

注意函数调用周围的括号:(xpath(...))

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35080743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档