- Nyomtat
Cikk összefoglaló
Hasznosnak találta ezt az összefoglalót?
Köszönjük visszajelzését
Á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?