XML to JSON Transformer

Conheça o componente e saiba como utilizá-lo.

Erick Rubiales avatar
Escrito por Erick Rubiales
Atualizado há mais de uma semana

IMPORTANTE: Esta documentação foi descontinuada. Leia a documentação XML to JSON Transformer atualizada no nosso novo portal de documentação.

O XML to JSON Transformer transforma um XML string em um objeto JSON.

Dê uma olhada nos parâmetros de configuração do componente:

  • XML Field Path: caminho do campo que contém o XML string a ser transformado. A representação desse caminho deve ser feita utilizando notação com pontos. Caso o campo seja uma matriz, todos os elementos dessa matriz serão percorridos. Você pode especificar vários campos, separando-os por vírgula.

  • Preserve Original: se a opção estiver ativada, os campos originais serão preservados no resultado da transformação e, para diferenciar do nome dos campos transformados, será adicionado o caractere "_" no início do nome dos campos originais.

  • With Namespace: se a opção estiver ativada, os namespaces do XML serão mantidos no resultado da transformação. 

  • Remove XML Attributes: se a opção estiver ativada, os atributos do XML serão omitidos do resultado da transformação.

  • All Values As String: se a opção estiver ativada, todos os valores das tags do XML serão transformados para o tipo string.

 

Fluxo de mensagens

Entrada

O componente não espera uma mensagem de entrada específica, apenas o preenchimento do parâmetro de configuração XML Field Path referenciando o caminho do campo a ser transformado. Esse campo deve existir na mensagem do passo anterior à execução do XML to JSON Transformer.

Saída

A estrutura será igual a da recebida do passo anterior do fluxo, porém os campos informados no parâmetro XML Field Path serão transformados em sua representação de objeto JSON. Em caso de erro, a propriedade "error" será criada no mesmo nível da propriedade original.

Quando o parâmetro Preserve Original estiver ativado, para cada campo informado no parâmetro XML Field Path, será gerada uma nova propriedade apenas adicionando o carácter "_" no início de seu nome e contendo o XML string original.

A notação com pontos de JSON vai procurar pelo elemento raiz que está sendo processado pelo pipeline e realizar um cruzamento de acordo com as especificações passadas na propriedade XML Field Path.

Exemplo:

Em uma representação do XML Field Path contendo a.b.c.d, "a" será procurado no elemento raiz. Em seguida será o "b", depois o "c" e finalmente o "d". Se um array for encontrado durante o cruzamento, então o algoritmo vai gerar um caminho de cruzamento para cada elemento no array. O algoritmo substitui todas as ocorrências do caminho definido em XML Field Path.


XML to JSON Transformer em Ação

Para todos os cenários abaixo, será considerado o seguinte payload contendo campo XML String

{
  "xmlField": "<?xml version=\"1.0\" ?><inf:ProductInformation xmlns:inf=\"urn:product:Info\" xmlns:stk=\"urn:product:Stock\"><inf:ProductName Code=\"C00001\">Computer</inf:ProductName><inf:Price Units=\"$\">2500</inf:Price><stk:Volume Units=\"Units\">200</stk:Volume></inf:ProductInformation>"
}

Transformação de XML

  • Entrada

Parâmetros

- XML Field Path: xmlField

- Preserve Original: false

- With Namespace: false

- Remove XML Attributes: false

- All Values As String: false

  • Saída

{
  "xmlField": {
    "ProductInformation": {
      "ProductName": {
        "Code": "C00001",
        "content": "Computer"
      },
      "Price": {
        "Units": "$",
        "content": 2500
      },
      "Volume": {
        "Units": "Units",
        "content": 200
      },
      "xmlns:stk": "urn:product:Stock",
      "xmlns:inf": "urn:product:Info"
    }
  }
}


Transformação de XML com parâmetro Preserve Original ativado

  • Entrada

Parâmetros

- XML Field Path: xmlField

- Preserve Original: true

- With Namespace: false

- Remove XML Attributes: false

- All Values As String: false

  • Saída

{
  "xmlField": {
    "ProductInformation": {
      "ProductName": {
        "Code": "C00001",
        "content": "Computer"
      },
      "Price": {
        "Units": "$",
        "content": 2500
      },
      "Volume": {
        "Units": "Units",
        "content": 200
      },
      "xmlns:stk": "urn:product:Stock",
      "xmlns:inf": "urn:product:Info"
    }
  },
  "_xmlField": "<?xml version=\"1.0\" ?><inf:ProductInformation xmlns:inf=\"urn:product:Info\" xmlns:stk=\"urn:product:Stock\"><inf:ProductName Code=\"C00001\">Computer</inf:ProductName><inf:Price Units=\"$\">2500</inf:Price><stk:Volume Units=\"Units\">200</stk:Volume></inf:ProductInformation>"
}


Transformação de XML com parâmetro With Namespace ativado

  • Entrada

Parâmetros

- XML Field Path: xmlField

- Preserve Original: false

- With Namespace: true

- Remove XML Attributes: false

- All Values As String: false

  • Saída

{
  "xmlField": {
    "inf:ProductInformation": {
      "inf:Price": {
        "Units": "$",
        "content": 2500
      },
      "xmlns:stk": "urn:product:Stock",
      "xmlns:inf": "urn:product:Info",
      "inf:ProductName": {
        "Code": "C00001",
        "content": "Computer"
      },
      "stk:Volume": {
        "Units": "Units",
        "content": 200
      }
    }
  }
}



Transformação de XML com parâmetro Remove XML Attributes ativado

  • Entrada

Parâmetros

- XML Field Path: xmlField

- Preserve Original: false

- With Namespace: false

- Remove XML Attributes: true

- All Values As String: false

  • Saída

{
  "xmlField": {
    "ProductInformation": {
      "ProductName": "Computer",
      "Price": 2500,
      "Volume": 200
    }
  }
}


Transformação de XML com parâmetro All Values As String ativado

  • Entrada

Parâmetros

- XML Field Path: xmlField

- Preserve Original: false

- With Namespace: false

- Remove XML Attributes: true

- All Values As String: true

Saída

{
  "xmlField": {
    "ProductInformation": {
      "ProductName": "Computer",
      "Price": "2500",
      "Volume": "200"
    }
  }
}
Respondeu à sua pergunta?