postgresql 如何在Postgres中使用带有名称空间xpath?

ars1skjm  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(175)

我在使用xpath()时遇到了一些问题。请考虑下面的示例XML:

<data code = '123' platform = 'a' xmlns = "http://www.myexample.com" >
 <payload>
   <title> this is it! </title>
 </payload>
</data>

这是数据库中我的列xml中存储的内容。我只是试图检索this is it!文本。我尝试了许多不同的查询(我认为问题可能是命名空间),但没有任何效果。
例如:

select *, xpath('//my:payload/text()',
                xml::xml,
                ARRAY[ARRAY['my','http://www.myexample.com']]) from mydatabase

不会传回任何值。有任何想法吗?谢谢!

g6ll5ycj

g6ll5ycj1#

对于从XML返回数据,我使用xmltable

select *
from T
  cross join xmltable(xmlnamespaces ('http://www.myexample.com' as m),
                      '/m:data/m:payload' 
                      passing cast(xml_column as xml)
                      columns title text path 'm:title'
                      ) as x

相关问题