- Impressão
Resumo do artigo
Você achou este resumo útil?
Obrigado por seu feedback
Visão geral
Um guia com dicas e truques para trabalhar com APIs baseadas em XML
Os Tulip Connectors podem ser usados para interagir com muitos tipos de fontes de dados externas. Este artigo se concentra em APIs HTTP que trocam informações usando XML. Essa categoria inclui APIs SOAP.
Envio de dados XML no Tulip
Para enviar conteúdo XML no corpo de uma solicitação, use a notação $value$
para mostrar que um parâmetro deve ser inserido.
Por exemplo, com o seguinte no 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 os valores `input1` e `input2` como entradas para a Connector Function, uma solicitação é feita com os valores de `input1` e `input2` substituídos no Request Body.
Isso é mostrado na interface da Tulip Connector Function abaixo:
![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=""}
## Analisando dados XML no Tulip
### Um exemplo simples de API
Vamos começar com um exemplo simples de resposta de uma API XML.
xml version="1.0" encoding="UTF-8"?
Italiano do cotidiano
Giada De Laurentiis
2005
30.00
Harry Potter
J. K. Rowling
2005
29.99
Aprendendo XML
Erik T. Ray
2003
39.95
Os exemplos a seguir mostram como acessar as várias informações no Tulip.
Um extrator de:
`/bookstore/book[1]/title`
retorna:
`<title lang="en">Everyday Italian</title>`
Observe que as matrizes em XML são "1-indexadas", o que significa que o primeiro elemento está na posição "1", ao contrário da {{glossary.JSON}}-query, que é "0-indexada".
Um extrator de:
`/bookstore/book[1]/title/text()`
retorna:
`Everyday Italian`
Observe que a função `/text()` é usada para extrair o valor do texto contido no nó selecionado.
Um extrator de:
`/bookstore/book[@category="children"][1]/title/text()`
retorna:
`Harry Potter`
Observe que o seletor nos permitiu pesquisar nas propriedades de um nó.
Esses exemplos podem ser usados diretamente no Tulip, conforme mostrado abaixo:
![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229776239.png)
### Um exemplo de API SOAP
Agora vamos examinar um caso mais complexo com namespaces, um recurso típico das APIs 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
>
>
>
>
>
> informações recuperadas com sucesso
>
>
>
>
>
>
>
> Minha operação
>
> Nenhuma
>
> 1234567-890
>
> B
>
>
>
>
>
>
>
> Número da peça
>
> 1234567-890
>
>
>
>
>
> Revisão da peça
>
> B
>
>
>
>
>
> Descrição da peça
>
> Minha peça de exemplo
>
>
>
>
>
>
>
> Normal
>
>
>
>
>
>
>
>
>
>
>
>
> ```
>
>
>
Essa resposta usa Namespaces XML, o que aumenta a complexidade. Na maioria dos casos, uma pesquisa global usando os operadores `//*` e `.//*` torna a extração muito simples.
Um extrator de:
`//*[local-name()="propertyName"][1]/text()`
retorna:
`PartNumber`
Observe que as matrizes em XML são "indexadas em 1", o que significa que o primeiro elemento está na posição "1", ao contrário da consulta json, que é "indexada em 0".
Um extrator de:
`//*[local-name()="Property"]`
retorna:
`<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>Minha parte de exemplo</propertyValue> </Property>`
Observe aqui que os namespaces são "trazidos" para esse resultado. Portanto, uma subconsulta ainda pesquisaria o namespace global.
Para extrair uma matriz de objetos, use a pesquisa global mostrada no exemplo anterior para extrair a matriz e, em seguida, um extrator de pesquisa local de:
`.//*[local-name()="propertyName"]/text()`
para recuperar uma matriz de objetos do tipo:
`[ { "Name": "PartNumber"
"Value": "1234567-890" }, { "Name": "PartRevision"
"Value" (Valor): "B"
}, { "Name": "PartDescription"
"Value" (Valor): "My example part"
}
]`
Esses exemplos são mostrados na interface de conectores da Tulip abaixo:
![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229781522.png)
---
Encontrou o que estava procurando?
Você também pode acessar [community.tulip.co](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all) para postar sua pergunta ou ver se outras pessoas tiveram uma pergunta semelhante!
Este artigo foi útil?