我一直试图从XML中提取值,就像@用一个可接受的答案回答了几次一样,但它对我不起作用:
根据这个职位和这个职位,这应该可以工作,但是我只得到一个空的结果:
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结果:(预期:{我的评论})
comment
xml[]
-------
{}我的数据库版本:
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有人有主意吗?
发布于 2016-01-29 09:20:44
XML定义了一个名称空间,该名称空间必须在xpath表达式中使用。
SELECT xpath('/g:Attributes/g:bemaerkning/text()', t, array[array['g','http://www.gis34.dk']]) as comment
FROM x注意第三个参数传递名称空间映射的二维数组。。
xpath()函数返回一个元素数组。如果您知道只获得一个元素(或只需要第一个元素),则只需返回数组的第一个元素:
SELECT (xpath('/g:Attributes/g:bemaerkning/text()', t, array[array['g','http://www.gis34.dk']])[1] as comment
FROM x注意函数调用周围的括号:(xpath(...))
https://stackoverflow.com/questions/35080743
复制相似问题