Munka SOAP és XML API-kkal
  • 31 Oct 2023
  • 2 Elolvasandó percek
  • Közreműködők

Munka SOAP és XML API-kkal


Cikk összefoglaló

Áttekintés

Útmutató tippekkel és trükkökkel az XML-alapú API-kkal való munkához

ATulip Connectors számos típusú külső adatforrással való interakcióra használható. Ez a cikk az XML használatával információt cserélő HTTP API-kra összpontosít. Ebbe a kategóriába tartoznak a SOAP API-k is.

XML-adatok küldése a Tulipban

XML-tartalom küldéséhez a kérés testében használja a $value$ jelölést annak jelzésére, hogy egy paramétert kell beilleszteni.

Például a következőkkel a Request Body mezőben:


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

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

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



> 
>   
> 
>   
> 
>   
> 
>   
> 
> $input1$  
> 
> $input2$  
> 
>   
> 
>   
> 
>   
> 
> 
> ```
> 
> 
> 


és az `input1` és `input2` értékeket a Connector Function bemeneteként, egy kérés készül az `input1` és `input2` értékekkel a Request Body-ba behelyettesítve.


Ezt mutatja az alábbi Tulip Connector Function interfész:


![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=""}


## XML-adatok elemzése a Tulipban


### Egy egyszerű API-példa


Kezdjük egy egyszerű példával, egy XML API-ból érkező válasszal.


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

Hétköznapi olasz

Giada De Laurentiis

2005

30.00

Harry Potter

J. K. Rowling

2005

29.99

XML tanulása

Erik T. Ray

2003

39.95



A következő példák azt mutatják, hogyan lehet a Tulipban lévő különböző információkhoz hozzáférni.


Egy kivonatoló:


`/bookstore/book[1]/title`


visszaadja:


`<title lang="en">Hétköznapi olasz</title>`


Vegye figyelembe, hogy az XML-ben a tömbök "1-indexáltak", ami azt jelenti, hogy az első elem az "1" pozícióban van, szemben a {{glossary.JSON}}-kérdéssel, amely "0-indexált".


Egy kivonatoló a:


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


visszaadja:


`Hétköznapi olasz`


Vegyük észre, hogy a `/text()` függvény a kiválasztott csomópontban található szövegérték kinyerésére szolgál.


A következő kivonatoló: An extractor of:


`/bookstore/book[@category="children"][1]/title/text()`


visszatér:


`Harry Potter`


Vegyük észre, hogy a szelektor lehetővé tette számunkra, hogy egy csomópont tulajdonságain belül keressünk.


Ezek a példák közvetlenül felhasználhatók a Tulipban, ahogy az alábbiakban látható:


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


### Egy SOAP API példa


Most vizsgáljunk meg egy összetettebb esetet névterekkel, ami a SOAP API-k tipikus jellemzője.


``` <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 sikeresen lekérdezett  
> 
>   
> 
>   
> 
>   
> 
> Műveletem  
> 
> Nincs  
> 
> 1234567-890  
> 
> B  
> 
>   
> 
>   
> 
>   
> 
> PartNumber  
> 
> 1234567-890  
> 
>   
> 
>   
> 
> PartRevision  
> 
> B  
> 
>   
> 
>   
> 
> PartDescription  
> 
> Az én példaalkatrészem  
> 
>   
> 
>   
> 
>   
> 
> Normál  
> 
>   
> 
>   
> 
>   
> 
>   
> 
>   
> 
> 
> ```
> 
> 
> 


Ez a válasz XML névtereket használ, ami bonyolultabbá teszi a dolgot. A legtöbb esetben a `//*` és `.//*` operátorok használatával végzett globális keresés nagyon egyszerűvé teszi a kivonatolást.


Egy kivonatoló a:


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


visszaadja:


`PartNumber`


Vegye figyelembe, hogy az XML-ben a tömbök "1-indexáltak", ami azt jelenti, hogy az első elem az "1" pozícióban van, szemben a json-kérdéssel, amely "0-indexált".


Egy kivonatoló:


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


visszatér:


`<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>A példarészem</propertyValue> </Property>`


Itt jegyezzük meg, hogy a névterek "lehozódnak" ebbe az eredménybe. És ezért egy al-lekérdezés továbbra is a globális névtérben keresne.


Objektumok tömbjének kinyeréséhez használjuk az előző példában bemutatott globális keresést a tömb kinyeréséhez, majd egy helyi kereső kivonatolót a:


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


formájú objektumok tömbjének kinyeréséhez:


`[ { { "Name": "PartNumber" 
 "Value": "1234567-890" }, { "Name": "PartRevision" 
 "Value": "B" 
 }, { "Name": "PartDescription" 
 "Value": "My example part" 
 } 
]`


Ezeket a példákat az alábbi Tulip Connectors Interface mutatja be:


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




---


Megtalálta, amit keresett?


A [community.tulip.co](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all) oldalon is megteheti, hogy felteszi kérdését, vagy megnézheti, hogy mások is szembesültek-e hasonló kérdéssel!


Hasznos volt ez a cikk?