2016-05-20 12 views
0

Ich habe eine Antwort von OSB-Service, wie unten einzufügen. Ich kann es durch Einfügen tun, aber dann muss ich 20 Einfügungen hinzufügen, wenn es 20 Elemente gibt. Können Sie mir bitte vorschlagen, ob dies über Xquery im OSB-Proxy möglich ist?OSB Xquery mehrere Elemente nach

cus:GetAllCustomersResponse xmlns:cus="http://www.waai.nl/cdm/customer"> 
      <cus:customerId>1</cus:customerId> 
      <cus:customerName>2</cus:customerName> 
      <cus:customerXXXXX>2</cus:customerXXXX> 
      <cus:customerXXYYY>2</cus:customerXXYYY> 
      <cus:customerVVV>2</cus:customerVVV> 
      <cus:customerBBB>2</cus:customerBBB> 
      <cus:customerEEE>2</cus:customerEEE> 
      ...... 
      ...... 
</cus:GetAllCustomersResponse> 

Danke !!

Antwort

0

Danke Jungs, bekam eine einfache Möglichkeit, dies durch Einsatz Aktion zu tun. Nach cus einfügen: customerName

let $getAllCustomersResponse := 
    <GetAllCustomersResponse> 
    <cus:customerXXXXX>2</cus:customerXXXX> 
    <cus:customerXXYYY>2</cus:customerXXYYY> 
    <cus:customerVVV>2</cus:customerVVV> 
    ............ 
    ............ 

    </GetAllCustomersResponse> 
    return 
    $getAllCustomersResponse/* 
0

Ja, es kann und ist in der Tat die bevorzugte Methode. Sie müssen ein wenig über FLWOR Ausdrücke nachlesen, aber Sie werden am Ende mit einer for Schleife einer Beschreibung enden.

0

zu Trent richtigen Antwort Hinzufügen, hier ist ein nützlicher link und der Beispielcode -

declare function local:insertEmpInfo($EmployeesIn as element()){ 

    copy $Employees := $EmployeesIn 

modify 
    (

    for $employee in $Employees/EMP 


    return (
      insert node <GENDER>M</GENDER> into $employee, 
      insert node <LOC>IND</LOC> into $employee/LOC, 
      insert node <ADDMORE>REPEAT_ME</ADDMORE> into $employee 

      ) 
) 

    return $Employees 

}; 

    declare function local:main() { 

      let $EmployeesIn := <EMPS> 
            <EMP> 
             <ID>1</ID> 
             <NAME>A</NAME> 
             <LOC/> 
            </EMP> 
            <EMP> 
             <ID>2</ID> 
             <NAME>B</NAME> 
             <LOC/> 
            </EMP> 
            </EMPS> 

return local:insertEmpInfo($EmployeesIn) 

    }; 
0

Eine weitere Sache, der Ausdruck Transformation (copy/modify) funktioniert nur, wenn Sie OSB 12+ verwenden.

let $value := <foo><bar>hello</bar></foo> 
return 
    copy $new := $value 
    modify (
    insert node <bat>world!</bat> as last into $new, 
    replace value of node $new/bar with "Hello" 
    ) 
    return $new 

Returns:

<foo> 
    <bar>Hello</bar> 
    <bat>world!</bat> 
</foo> 

Alle Details sind hier: https://www.w3.org/TR/xquery-update-10/