Ana içeriğe atla
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
Bu script, request hattında (Request Policy) çalıştırılmalıdır çünkü requestBodyTextFromClient ve requestErrorMessageToTargetAPI değişkenlerini kullanmaktadır.