0

我在 postgresql 中编写函数时遇到问题,该函数获取 xml 数据的输入,然后获取所有节点,并且对于以 work 'key' 结尾的节点调用函数。例如,我必须这样做:

function readdata(data xml) RETURNS VOID AS $$
INSERT INTO data_table SELECT FROM xpath('//text()',data)

一些xml是这样的:

< node1>sometext< /node1>
< node2_key>anyvalue< /node2_key>
< node3_key>integer< /node3_key>
< node4>anyvalue< /node4>

但我不知道如何check_val('node2',valueof node2_key )在从数据参数中选择时调用函数。

我试图实现的是:在我的 SELECT 在 myfunction 中,当它们不以单词'key'结尾时,它给了我节点的值,而以它结尾的节点给了我 check_val 函数的结果。

有没有办法用 postgresql 9.1 做到这一点?我将不胜感激任何代码示例。

4

1 回答 1

1

我不了解 Postgres,但获取名称以结尾的所有节点(元素)的文本的 XPathkey是:

//*[string-length(name())>2 and substring(name(),string-length(name())-2,3)='key']/text()

以及用于获取名称不以结尾的所有节点(元素)的文本的 XPathkey是:

//*[string-length(name())<3 or substring(name(),string-length(name())-2,3)!='key']/text()
于 2012-05-25T15:16:31.980 回答