> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Görevler Arası XML Veri Aktarımı ve Kullanımı

> API Integrator görevleri arasında XML veri aktarımını gerçekleştirebilir. XML verisi dönen bir API'den veri okuyup, dönen sonuç içerisindeki array tipindeki elemanları döngü içinde başka bir API'ye gönderebilir.

**Senaryo:** XML verisi dönen bir API çağrılacak, dönen sonuç içerisindeki array tipindeki elemanların her biri belirli bir format ile başka bir API'ye gönderilecektir.

Bu durumda iki tane API Call konnektörünü görev olarak eklenmelidir. Birincisi okuma diğeri ise döngü içinde yazma için gereklidir.

## Görev-1: API Call konnektörü ile veri okuma

<Steps>
  <Step title="API Call görevi ekle">
    Görevlerin listelendiği diyalogtan API Call seçeneğine tıklanır.
  </Step>

  <Step title="Once modunu seç">
    Görevin bir kez çalışacağını belirtmek için "Once" seçeneği seçilir.
  </Step>

  <Step title="API erişim bilgilerini gir">
    Veri okumasının yapılacağı ilgili API erişim bilgileri girilir.
  </Step>

  <Step title="Output anahtar bilgisini ayarla">
    Bir sonraki görevde API'den dönen veriyi kullanabilmek için output anahtar bilgisine **"xmlResponse"** değeri verilir. (Bu değer adını istediğiniz şekilde isimlendirebilirsiniz.)
  </Step>
</Steps>

<img src="https://mintcdn.com/apinizer/VPp8Ki0B0Qfzhhs9/images/tutorials/api-entagratoru/xml1.png?fit=max&auto=format&n=VPp8Ki0B0Qfzhhs9&q=85&s=96c860f07d5a746d8be3fdef9b54674b" alt="Görev-1: API Call konnektörü ile veri okuma" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/tutorials/api-entagratoru/xml1.png" />

Bu görev çalıştırıldığında bu örnekte aşağıdaki XML Verisi dönmektedir, yani **xmlResponse** değeri içerisinde aşağıdaki veri olacaktır:

```xml theme={null}
<root>
 <users>
  <user>
   <id>1</id>
   <name>user 1</name>
   <description>Description of user 1</description>
  </user>
  <user>
   <id>2</id>
   <name>user 2</name>
   <description>Description of user 2</description>
  </user>
  <user>
   <id>3</id>
   <name>user 3</name>
   <description>Description of user 3</description>
  </user>
 </users>
</root>
```

## Görev-2: API Call konnektörü ile API'ye veri gönderme

<Steps>
  <Step title="API Call görevi ekle">
    Görevlerin listelendiği diyalogtan API Call seçeneğine tıklanır.
  </Step>

  <Step title="Loop modunu seç">
    Önceki görevden gelen dizi verisi üzerinde döngü ile çalışılacağını belirtmek için "Loop" seçeneği seçilir.
  </Step>

  <Step title="XPath belirle">
    Bir önceki görevde girilen output anahtar bilgisi **("xmlResponse")** değerinin neresinin dizi olarak işlenmesi gerektiği bilgisi XPath olarak yazılır.

    XPath yazılırken bir önceki veri üzerinde XML olarak işlem yapılmasını belirtmek için **"#/"** işareti, anahtar bilgisine **("xmlResponse")** eklenir. Sonrasında XPath olarak dizi elemanlarının olduğu path girilir. Bu durumda bu örnek için XPath yazan yere şu yazılmalıdır: **"\{\{xmlResponse#/root/users/user}}"**
  </Step>

  <Step title="Hedef API erişim bilgilerini gir">
    Verinin gönderileceği erişilmek istenen ilgili API erişim bilgileri girilir.
  </Step>

  <Step title="Şablon mesaj bilgisini gir">
    Gönderilmek istenen şablon mesaj bilgisi girilir. Şablon mesaj bilgisi içerisinde döngüdeki elemanların değerleri kullanılmak istenirse **"LOOP\_VARIABLE"** ifadesi ile ilgili eleman içindeki verinin şablona eklenmesi sağlanır. LOOP\_VARIABLE ile beraber döngü için hedef gösterilen eleman içindeki XML verisine erişilecek XPath bilgisi girilmelidir.
  </Step>
</Steps>

<img src="https://mintcdn.com/apinizer/VPp8Ki0B0Qfzhhs9/images/tutorials/api-entagratoru/xml2.png?fit=max&auto=format&n=VPp8Ki0B0Qfzhhs9&q=85&s=cd88e1b9c80d54b1c0ab2f7644af93e6" alt="Görev-2: API Call konnektörü ile API'ye veri gönderme" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/tutorials/api-entagratoru/xml2.png" />

Bu örnekte, bir önceki görevden dönen **xmlResponse** verisi üzerinde **"\{\{xmlResponse#/root/users/user}}"** ifadesi çalıştırıldığında 3 adet eleman döner ve bu görevin 3 kez çalışacağını gösterir.

İlk çalışmada LOOP\_VARIABLE değeri içinde aşağıdaki XML olacaktır.

```xml theme={null}
<user>
 <id>1</id>
 <name>user 1</name>
 <description>Description of user 1</description>
</user>
```

Bu XML üzerinde çalıştırılmak istenen şablon aşağıdaki gibi olduğunu düşünelim:

```json theme={null}
{
 "test_id":"&#123;&#123;LOOP_VARIABLE#/id/text()&#125;&#125;",
 "test_name":"&#123;&#123;LOOP_VARIABLE#/name/text()&#125;&#125;",
 "test_description":"&#123;&#123;LOOP_VARIABLE#/description/text()&#125;&#125;"
}
```

Burada hedef veriyi almak için LOOP\_VARIABLE yanında kullanılan XPath'in text() metodu ile bittiğine dikkat edilmelidir.

Bu durumda API Call ile gönderilecek istek gövdesi aşağıdaki şekilde olacaktır:

```json theme={null}
{
 "test_id": "1",
 "test_name": "user 1",
 "test_description": "Description of user 1"
}
```
