- Drucken
Artikel-Zusammenfassung
Fanden Sie diese Zusammenfassung hilfreich?
Vielen Dank für Ihr Feedback
Ü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?