- Wydrukować
Praca z interfejsami API SOAP i XML
Streszczenie artykułu
Czy to podsumowanie było pomocne?
Dziękujemy za Twoją opinię
Przegląd
Przewodnik z poradami i wskazówkami dotyczącymi pracy z interfejsami API opartymi na XML
Tulip Connectors mogą być używane do interakcji z wieloma typami zewnętrznych źródeł danych. Ten artykuł koncentruje się na interfejsach API HTTP, które wymieniają informacje przy użyciu języka XML. Kategoria ta obejmuje interfejsy API SOAP.
Wysyłanie danych XML w aplikacji Tulip
Aby wysłać zawartość XML w treści żądania, należy użyć notacji $value$
, aby pokazać, że parametr powinien zostać wstawiony.
Na przykład, z następującą treścią w polu Request Body:
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:mes="http://mes.myexample.com"
xmlns:get="http://getInfo.mes.myexample.com"
>
>
>
>
>
>
>
>
>
> $input1$
>
> $input2$
>
>
>
>
>
>
>
>
> ```
>
>
>
i wartości `input1` i `input2` jako dane wejściowe do funkcji Connector, żądanie jest wysyłane z wartościami `input1` i `input2` podstawionymi do treści żądania.
Jest to pokazane w interfejsie funkcji Tulip Connector poniżej:
![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=""}
## Parsowanie danych XML w Tulip
### Prosty przykład API
Zacznijmy od prostego przykładu odpowiedzi z XML API.
xml version="1.0" encoding="UTF-8"?
Włoski na co dzień
Giada De Laurentiis
2005
30.00
Harry Potter
J K. Rowling
2005
29.99
Nauka XML
Erik T. Ray
2003
39.95
Poniższe przykłady pokazują jak uzyskać dostęp do różnych informacji w Tulip.
Ekstraktor z:
`/bookstore/book[1]/title`
zwraca:
`<title lang="en">Włoski na co dzień</title>.`
Należy pamiętać, że tablice w XML są "1-indeksowane", co oznacza, że pierwszy element znajduje się na pozycji "1", w przeciwieństwie do zapytania {{glossary.JSON}}, które jest "0-indeksowane".
Ekstraktor z:
`/bookstore/book[1]/title/text()`
zwraca:
`Włoski na co dzień`
Należy zauważyć, że funkcja `/text` () jest używana do wyodrębnienia wartości tekstowej zawartej w wybranym węźle.
Extractor of:
`/bookstore/book[@category="children"][1]/title/text()`
zwraca:
`Harry Potter`
Zwróć uwagę, że selektor umożliwił nam wyszukiwanie we właściwościach węzła.
Przykłady te mogą być bezpośrednio wykorzystane w Tulip, jak pokazano poniżej:
![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229776239.png)
### Przykład API SOAP
Przeanalizujmy teraz bardziej złożony przypadek z przestrzeniami nazw, typową cechą interfejsów API SOAP.
``` <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
>
>
>
>
>
> informacje pobrane pomyślnie
>
>
>
>
>
>
>
> Moja operacja
>
> Brak
>
> 1234567-890
>
> B
>
>
>
>
>
>
>
> PartNumber
>
> 1234567-890
>
>
>
>
>
> PartRevision
>
> B
>
>
>
>
>
> PartDescription
>
> Moja przykładowa część
>
>
>
>
>
>
>
> Normalny
>
>
>
>
>
>
>
>
>
>
>
>
> ```
>
>
>
Ta odpowiedź wykorzystuje przestrzenie nazw XML, które zwiększają złożoność. W większości przypadków globalne wyszukiwanie przy użyciu operatorów `//*` i `.//*` sprawia, że ekstrakcja jest bardzo prosta.
Ekstraktor:
`//*[local-name()="propertyName"][1]/text()`
zwraca:
`PartNumber`
Należy pamiętać, że tablice w XML są "1-indeksowane", co oznacza, że pierwszy element znajduje się na pozycji "1", w przeciwieństwie do zapytań json, które są "0-indeksowane".
Ekstraktor z:
`//*[local-name()="Property"]`
zwraca:
`<Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>PartNumber</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>Moja przykładowa część</propertyValue> </Property>.`
Należy zauważyć, że przestrzenie nazw są "sprowadzane" do tego wyniku. Dlatego podzapytanie nadal przeszukiwałoby globalną przestrzeń nazw.
Aby wyodrębnić tablicę obiektów, użyj globalnego wyszukiwania pokazanego w poprzednim przykładzie, aby wyodrębnić tablicę, a następnie lokalnego ekstraktora wyszukiwania:
`.//*[local-name()="propertyName"]/text()`
aby pobrać tablicę obiektów w postaci:
`[ { "Name": "PartNumber"
"Value": "1234567-890" }, { "Name": "PartRevision"
"Value": "B"
}, { "Name": "PartDescription"
"Value": "Moja przykładowa część"
}
]`
Przykłady te są pokazane w interfejsie Tulip Connectors poniżej:
![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229781522.png)
---
Czy znalazłeś to, czego szukałeś?
Możesz również udać się na stronę [community.tulip.co](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all), aby opublikować swoje pytanie lub sprawdzić, czy inni mieli do czynienia z podobnym pytaniem!
Czy ten artykuł był pomocny?