2012-05-25 1 views
0

xml 데이터로 입력을받는 postgresql 함수를 작성하는 데 문제가 있습니다. 은 모든 노드를 가져오고 'key'작업으로 끝나는 노드는 함수를 호출합니다.postgres xpath 모든 노드와 일부 노드에서 함수 사용

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) 같은 함수를 호출하는 방법을 잘 모릅니다 예에서 내가해야한다.

내가 무엇을 얻으려고하는지 : 내 선택 myfunction에서 그들은 나를 'key'라는 단어로 끝나지 않을 때 노드의 가치를 제공하고, 끝나는 노드는 check_val 함수의 결과를 준다. .

postgresql 9.1에서 할 수있는 방법이 있습니까? 코드 예제가 있으면 감사하게 생각합니다. key가 함께

답변

1

이름이 내가 포스트 그레스 모르는,하지만 XPath는 모든 노드 (요소)의 텍스트를 얻을 종료 :

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

와는 XPath가의 텍스트를 얻기 위해 모든 이름이 key로 끝나지 않는 노드 (요소)입니다 : 내가 exacly 무엇을 의미하는지

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

그게 전부하지, 난 SELECT node1_value, check_val ('노드 2'위해 valueOf node2_key), check_val 같은 출력 뭔가를 갖고 싶어 (' node3 ', node3_key 값), node4_value – Axxxon

관련 문제