- Stampa
Sommario dell'articolo
Hai trovato utile questo riassunto?
Grazie per il tuo feedback
Panoramica
Una guida con suggerimenti e trucchi per lavorare con le API basate su XML
ITulip Connector possono essere utilizzati per interagire con molti tipi di fonti di dati esterne. Questo articolo si concentra sulle API HTTP che scambiano informazioni utilizzando XML. Questa categoria comprende le API SOAP.
Invio di dati XML in Tulip
Per inviare contenuti XML nel corpo di una richiesta, utilizzare la notazione $value$
per indicare che un parametro deve essere inserito.
Ad esempio, con quanto segue nel campo 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$
>
>
>
>
>
>
>
>
> ```
>
>
>
e i valori `input1` e `input2` come input della funzione Connector, viene fatta una richiesta con i valori di `input1` e `input2` sostituiti nel corpo della richiesta.
Questo è mostrato nell'interfaccia della funzione Connector di Tulip:
![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=""}
## Analizzare i dati XML in Tulip
### Un semplice esempio di API
Cominciamo con un semplice esempio di risposta da un'API XML.
xml version="1.0" encoding="UTF-8"?
Italiano quotidiano
Giada De Laurentiis
2005
30.00
Harry Potter
J. K. Rowling
2005
29.99
Imparare l'XML
Erik T. Ray
2003
39.95
I seguenti esempi mostrano come accedere alle varie informazioni di Tulip.
Un estrattore di:
`/libreria/libro[1]/titolo`
restituisce:
`<titolo lang="en">L'italiano di tutti i giorni</titolo>.`
Si noti che gli array in XML sono "indicizzati a 1", il che significa che il primo elemento è in posizione "1", a differenza di {{glossario.JSON}}-query che è "indicizzato a 0".
Un estrattore di:
`/libreria/libro[1]/titolo/testo()`
restituisce:
`Italiano quotidiano`
Si noti che la funzione `/testo()` viene utilizzata per estrarre il valore del testo contenuto nel nodo selezionato.
Un estrattore di:
`/libreria/libro[@categoria="bambini"][1]/titolo/testo()`
restituisce:
`Harry Potter`
Si noti che il selettore ci ha permesso di cercare all'interno delle proprietà di un nodo.
Questi esempi possono essere utilizzati direttamente in Tulip, come mostrato di seguito:
![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229776239.png)
### Esempio di API SOAP
Esaminiamo ora un caso più complesso con gli spazi dei nomi, una caratteristica tipica delle 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
>
>
>
>
>
> informazioni recuperate con successo
>
>
>
>
>
>
>
> La mia operazione
>
> Nessuna
>
> 1234567-890
>
> B
>
>
>
>
>
>
>
> Numero di parte
>
> 1234567-890
>
>
>
>
>
> Revisione della parte
>
> B
>
>
>
>
>
> Descrizione della parte
>
> Il mio esempio di parte
>
>
>
>
>
>
>
> Normale
>
>
>
>
>
>
>
>
>
>
>
>
> ```
>
>
>
Questa risposta utilizza gli spazi dei nomi XML, che aggiungono complessità. Per la maggior parte dei casi, una ricerca globale con gli operatori `//*` e `.//*` rende l'estrazione molto semplice.
Un estrattore di:
`//*[local-name()="propertyName"][1]/text()`
restituisce:
`Numero di parte`
Si noti che gli array in XML sono "indicizzati a 1", il che significa che il primo elemento è in posizione "1", a differenza di json-query che è "indicizzato a 0".
Un estrattore di:
`//*[local-name()="Property"]`
restituisce:
`<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>My example part</propertyValue> </Property>`
Si noti che gli spazi dei nomi vengono "portati giù" in questo risultato. Pertanto, una sotto-query cercherebbe ancora nello spazio dei nomi globale.
Per estrarre un array di oggetti, usare la ricerca globale mostrata nell'esempio precedente per estrarre l'array e poi un estrattore di ricerca locale di:
`.//*[local-name()="propertyName"]/text()`
per recuperare un array di oggetti della forma:
`[ {"Nome": "PartNumber"
"Value": "1234567-890" }, { "Name": "PartRevision"
"Value": "B"
}, { "Name": "PartDescription"
"Value": "La mia parte di esempio"
}
]`
Questi esempi sono mostrati nell'interfaccia dei connettori Tulip di seguito:
![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229781522.png)
---
Avete trovato quello che cercavate?
Potete anche andare su [community.tulip.co](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all) per postare la vostra domanda o vedere se altri hanno affrontato una domanda simile!
Questo articolo è stato utile?