0

我有一些这样的 XML:

<title>A Closer Look</title>
<pubDate>Thu, 12 Sep 2019 17:46:49 +0000</pubDate>
<language>en</language>
<copyright><![CDATA[]]></copyright>
<category:keywords>business,businessnews</category:keywords>

我正在使用此查询来解析 XML:

SELECT (xpath('//channel/title/text()', x))[1]::varchar AS Title,
       (xpath('//channel/pubDate/text()', x))[1]::varchar AS PublishDate,
       (xpath('//channel/language/text()', x))[1]::varchar AS Language,
       (xpath('//channel/copyright/text()', x))[1]::varchar AS Copyright,
       (xpath('//channel/category:keywords']/text()', x))[1]::varchar AS CategoryKeywords
FROM unnest(xpath('//channel', pg_read_file('test.xml')::xml)) x;

但是,我在冒号上收到了这个错误:

ERROR:  could not create XPath object
DETAIL:  Undefined namespace prefix

如何执行此查询,包括带有冒号的节点名称

感谢!

4

1 回答 1

0

您需要“类别”的名称空间声明。尝试将其放在 XML 的根元素中:

<root xmlns:category="tempuri.org">

- 你没有包含你的整个 XML,所以我把元素称为“根”——但你不需要改变它。

于 2020-08-01T00:37:49.440 回答