我在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做到这一点? 我会对任何代码示例表示感谢。
答案 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()