MENU
    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.
    Plain text

    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!
    Plain text

    Czy ten artykuł był pomocny?