Arbeiten mit SOAP- und XML-APIs
  • 31 Oct 2023
  • 3 Minuten zu lesen
  • Mitwirkende

Arbeiten mit SOAP- und XML-APIs


Article Summary

Übersicht

Ein Leitfaden mit Tipps und Tricks für die Arbeit mit XML-basierten APIs

Tulip Connectors können für die Interaktion mit vielen Arten von externen Datenquellen verwendet werden. Dieser Artikel konzentriert sich auf HTTP-APIs, die Informationen mit XML austauschen. Zu dieser Kategorie gehören auch SOAP-APIs.

Senden von XML-Daten in Tulip

Um XML-Inhalte im Body einer Anfrage zu senden, verwenden Sie die $value$-Notation, um zu zeigen, dass ein Parameter eingefügt werden soll.

Zum Beispiel, mit dem folgenden im Feld Request Body:


 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  

 xmlns:mes="http://mes.myexample.com"  

 xmlns:get="http://getInfo.mes.myexample.com" 



> 
>   
> 
>   
> 
>   
> 
>   
> 
> $Eingabe1$  
> 
> $Eingabe2$  
> 
>   
> 
>   
> 
>   
> 
> 
> ```
> 
> 
> 


und die Werte `input1` und `input2` als Eingaben an die Connector Function, wird eine Anfrage mit den Werten von `input1` und `input2` im Request Body gestellt.


Dies wird in der untenstehenden Schnittstelle der Tulip Connector Function gezeigt:


![Working with SOAP and XML APIs_229803470.png](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229803470.png){height="" width=""}


## Parsen von XML-Daten in Tulip


### Ein einfaches API-Beispiel


Beginnen wir mit einer einfachen Beispielantwort von einer XML-API.


```


xml version="1.0" encoding="UTF-8"?
  

  

Alltägliches Italienisch  

Giada De Laurentiis  

2005  

30.00  

  

  

Harry Potter  

J. K. Rowling  

2005  

29.99  

  

  

XML lernen  

Erik T. Ray  

2003  

39.95  

  


```


Die folgenden Beispiele zeigen, wie man auf die verschiedenen Informationen in Tulip zugreifen kann.


Ein Extraktor von:


`/Buchhandlung/Buch[1]/Titel`


gibt zurück:


`<title lang="en">Alltägliches Italienisch</title>`


Beachten Sie, dass Arrays in XML "1-indiziert" sind, was bedeutet, dass das erste Element an der Position "1" steht, im Gegensatz zu {{glossary.JSON}}-query, die "0-indiziert" ist.


Ein Extraktor von:


`/bookstore/book[1]/title/text()`


gibt zurück:


`Italienisch für jeden Tag`


Beachten Sie, dass die Funktion `/text()` verwendet wird, um den im ausgewählten Knoten enthaltenen Textwert zu extrahieren.


Ein Extraktor von:


`/Buchhandlung/Buch[@category="Kinder"][1]/Titel/Text()`


gibt zurück:


`Harry Potter`


Man beachte, dass der Selektor die Suche innerhalb der Eigenschaften eines Knotens ermöglicht hat.


Diese Beispiele können, wie unten gezeigt, direkt in Tulip verwendet werden:


![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229776239.png)


### Ein SOAP API Beispiel


Lassen Sie uns nun einen komplexeren Fall mit Namespaces untersuchen, ein typisches Merkmal von SOAP-APIs.


```` <soap:Envelope  

 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  

 xmlns:xsd="http://www.w3.org/2001/XMLSchema"  

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 



> 
>   
> 
>   
> 
>   
> 
>   
> 
>  0  
> 
>   
> 
>   
> 
>  Info erfolgreich abgerufen  
> 
>   
> 
>   
> 
>   
> 
> Meine Operation  
> 
> Keine  
> 
> 1234567-890  
> 
> B  
> 
>   
> 
>   
> 
>   
> 
> TeilNummer  
> 
> 1234567-890  
> 
>   
> 
>   
> 
> TeilRevision  
> 
> B  
> 
>   
> 
>   
> 
> TeilBeschreibung  
> 
> Mein Beispielteil  
> 
>   
> 
>   
> 
>   
> 
> Normal  
> 
>   
> 
>   
> 
>   
> 
>   
> 
>   
> 
> 
> ```
> 
> 
> 


Diese Antwort verwendet XML Namespaces, die die Komplexität erhöhen. In den meisten Fällen ist die Extraktion durch eine globale Suche mit den Operatoren `//*` und `.//*` sehr einfach.


Ein Extraktor von:


`//*[lokaler-name()="Eigenschaftsname"][1]/text()`


gibt zurück:


`TeilNummer`


Beachten Sie, dass Arrays in XML "1-indiziert" sind, was bedeutet, dass das erste Element an der Position "1" steht, im Gegensatz zu json-query, das "0-indiziert" ist.


Ein Extraktor von:


`//*[local-name()="Eigenschaft"]`


gibt zurück:


`<Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>TeilNummer</propertyName> <propertyValue>1234567-890</propertyValue> </Property> <Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>PartRevision</propertyName> <propertyValue>B</propertyValue> </Property> <Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>PartDescription</propertyName> <propertyValue>Mein Beispielteil</propertyValue> </Property>`


Beachten Sie hier, dass die Namensräume in dieses Ergebnis "heruntergeholt" werden. Daher würde eine Unterabfrage immer noch den globalen Namespace durchsuchen.


Um ein Array von Objekten zu extrahieren, verwenden Sie die im vorherigen Beispiel gezeigte globale Suche, um das Array zu extrahieren, und dann einen lokalen Suchextraktor von:


`.//*[local-name()="propertyName"]/text()`


um ein Array von Objekten der Form abzurufen:


`[ { "Name": "TeilNummer" 
 "Wert": "1234567-890" }, { "Name": "PartRevision" 
 "Value": "B" 
 }, { "Name": "PartDescription" 
 "Value": "Mein Beispielteil" 
 } 
]`


Diese Beispiele werden in der Tulip Connectors Schnittstelle unten gezeigt:


![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229781522.png)




---


Haben Sie gefunden, wonach Sie gesucht haben?


Sie können auch auf [community.tulip.co](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all) Ihre Frage stellen oder sehen, ob andere eine ähnliche Frage hatten!


War dieser Artikel hilfreich?