postgres xpath所有节点并使用少数几个函数

时间:2012-05-25 13:52:38

标签: xml postgresql xpath

我在postgresql中编写一个使用xml数据输入的函数时出现问题, 然后获取所有节点以及以工作结束的节点' 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中,它给了我节点的价值,当它们没有结束单词&#39; key&#39;并且对于以它结尾的节点给出了check_val函数的结果。

有没有办法用postgresql 9.1做到这一点? 我会对任何代码示例表示感谢。

1 个答案:

答案 0 :(得分:1)

我不知道Postgres,但获取名称以key结尾的所有节点(元素)的文本的XPath是:

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

和获取名称不以key结尾的所有节点(元素)的文本的XPath是:

//*[string-length(name())<3 or substring(name(),string-length(name())-2,3)!='key']/text()