Praca z interfejsami API SOAP i XML
  • 31 Oct 2023
  • 2 Minuty do przeczytania
  • Współtwórcy

Praca z interfejsami API SOAP i XML


Streszczenie artykułu

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?