Ana içeriğe geç

Dinamik Xml-2-Json Scripti

bilgi

XML/SOAP bir web servisi JSON/REST olarak sunmak için Apinizer üzerindeki Rest-2-Soap özelliği kullanılabilir. Detaylı bilgi için SOAP/REST API Proxy Oluşturma sayfasını inceleyebilirsiniz.

Groovy Script​

"nodeName" alanına ilgili XML'de filtrelemek istediğiniz parent node'un adını girerek ilgili node ve tüm child node'larını dinamik bir şekilde JSON'a çevirebilirsiniz.

import groovy.util.XmlSlurper
import groovy.json.JsonOutput

try {
def slurper = new XmlSlurper(false, false)
def data = slurper.parseText(requestBodyTextFromClient)
def parsedData = data.'**'.findAll { it.name().contains('nodeName') }
def result = [:]
parsedData.each { node ->
node.'**'.each { subNode ->
if (!subNode.children() || subNode.children().size() == 0) {
result[subNode.name()] = subNode.text()
}
}
}
requestBodyTextFromClient = JsonOutput.prettyPrint(JsonOutput.toJson(result))
} catch (Exception ex) {
requestErrorMessageToTargetAPI = ex.message
}

Açıklama​

Bu script şu işlemleri gerçekleştirir:

  1. XML Parse: Request body'den gelen XML verisi parse edilir
  2. Node Filtreleme: Belirtilen nodeName ile eşleşen parent node ve tüm child node'ları bulunur
  3. JSON Dönüşümü: Bulunan node'lar JSON formatına dönüştürülür
  4. Hata Yönetimi: Hata durumunda hata mesajı oluşturulur
not

Bu script, request hattında (Request Policy) çalıştırılmalıdır çünkü requestBodyTextFromClient ve requestErrorMessageToTargetAPI değişkenlerini kullanmaktadır.