Lavorare con API SOAP e XML
  • 31 Oct 2023
  • 3 Minuti da leggere
  • Contributori

Lavorare con API SOAP e XML


Article Summary

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?