# XML to JSON Transformer

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

## Parâmetros

Configure o conector usando os parâmetros abaixo. Campos que suportam [expressões Double Braces](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces) estão marcados na coluna **Suporta DB**.

{% tabs fullWidth="true" %}
{% tab title="General" %}

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Tipo</th><th>Suporta DB</th><th>Padrão</th></tr></thead><tbody><tr><td><strong>Alias</strong></td><td>Nome (alias) para a saída deste conector, permitindo que você faça referência a ele posteriormente no fluxo usando expressões Double Braces.</td><td>String</td><td>✅</td><td>xml-to-json-1</td></tr><tr><td><strong>XML Field Path</strong></td><td>Caminho do campo XML a ser transformado, usando notação com pontos. Se o campo for uma matriz, todos os elementos serão processados. Você pode especificar vários campos separando-os por vírgulas.</td><td>String</td><td>❌</td><td>body</td></tr><tr><td><strong>Preserve Original</strong></td><td>Se habilitado, os campos originais serão preservados no resultado da transformação. Para diferenciar os campos originais dos transformados, um sublinhado (_) é adicionado no início dos nomes dos campos originais.</td><td>Booleano</td><td>❌</td><td>True</td></tr><tr><td><strong>With Namespace</strong></td><td>Se habilitado, os namespaces XML são preservados no resultado da transformação.</td><td>Booleano</td><td>❌</td><td>True</td></tr><tr><td><strong>Remove XML Attributes</strong></td><td>Se habilitado, os atributos XML ficarão ocultos no resultado da transformação.</td><td>Booleano</td><td>❌</td><td>False</td></tr><tr><td><strong>All Values As String</strong></td><td>Se habilitado, todos os valores de tags XML serão convertidos para o tipo string.</td><td>Booleano</td><td>❌</td><td>False</td></tr><tr><td><strong>Escape Special Characters</strong></td><td>Se habilitado,escapa automaticamente caracteres XML reservados (<code>&#x26;</code>,<code>&#x3C;</code>,<code>></code>) para evitar erros de análise durante a transformação de dados.</td><td>Booleano</td><td>❌</td><td>False</td></tr><tr><td><strong>Tolerate Invalid XML</strong></td><td>Se habilitado, um objeto JSON de fallback será retornado em vez de lançar uma exceção para XML inválido.</td><td>Booleano</td><td>❌</td><td>False</td></tr></tbody></table>

{% endtab %}

{% tab title="Documentation" %}

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Tipo</th><th>Suporta DB</th><th>Padrão</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td>Campo opcional para descrever a configuração do conector e quaisquer regras de negócio relevantes.</td><td>String</td><td>❌</td><td>N / A</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Fluxo de mensagens <a href="#h_2b523ac67c" id="h_2b523ac67c"></a>

### Entrada <a href="#h_b1242ec6a1" id="h_b1242ec6a1"></a>

O conector não requer uma mensagem de entrada específica. Você só precisa configurar o parâmetro **XML Field Path** com uma referência ao caminho do campo que contém o XML a ser transformado. Este campo deve estar presente na saída da etapa imediatamente anterior à execução do **XML to** **JSON Transformer.**

### Saída <a href="#h_9af5c58cea" id="h_9af5c58cea"></a>

A estrutura de saída permanece a mesma que a recebida na etapa anterior. Os campos especificados no parâmetro **XML Field Path** são transformados em sua representação de objeto JSON. Se ocorrer um erro, uma propriedade `error` é criada no mesmo nível da propriedade original.

Quando o parâmetro **Preserve Original** estiver habilitado, cada campo definido no parâmetro **XML Field Path** gera uma propriedade adicional prefixada com um sublinhado (`_`), contendo a sequência XML original.

A notação com pontos de JSON identifica o elemento raiz que está sendo processado pelo pipeline e navega por ele de acordo com o caminho definido no parâmetro **XML Field Path**.

**Exemplo:**

Em um parâmetro **XML Field Path** representado como `a.b.c.d`, o conector irá:

1. Procurar o elemento `a` no nível da raiz.
2. Dentro de `a` ele vai encontrar `b`.
3. Então, dentro de `b` ele vai encontrar `c`.
4. Por fim, ele vai acessar `d`, que é o elemento a ser transformado.

O conector identifica cada `<d>` elemento dentro `<c>→<b>→<a>` e os converte em JSON.

Se um **array** é encontrado ao longo do caminho (por exemplo, se `b` contém vários itens), o algoritmo processa **cada elemento do array individualmente,** criando um caminho separado para cada um.

Em outras palavras, o algoritmo substitui **todas as ocorrências** do caminho definido no parâmetro **XML Field Path** ao longo da mensagem.

## XML to JSON Transformer em ação <a href="#h_8eecc69498" id="h_8eecc69498"></a>

Para todos os cenários abaixo, será considerado o seguinte *payload* contendo campo XML *String*:&#x20;

```json
{  
    "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 <a href="#h_04b9b7be13" id="h_04b9b7be13"></a>

#### **Entrada**

**Parâmetros**

* **XML Field Path:** xmlField
* **Preserve Original**: false
* **With Namespace**: false
* **Remove XML Attributes**: false
* **All Values As String**: false

#### **Saída**

```json
{
  "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 <a href="#h_b00e976c0d" id="h_b00e976c0d"></a>

#### **Entrada**

**Parâmetros**

* **XML Field Path:** xmlField
* **Preserve Original**: true
* **With Namespace**: false
* **Remove XML Attributes**: false
* **All Values As String**: false

#### **Saída**

```json
{
  "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 *"*&#x57;ith Namespace" ativado <a href="#h_77d05c7d86" id="h_77d05c7d86"></a>

#### **Entrada**

**Parâmetros**

* **XML Field Path:** xmlField
* **Preserve Original**: false
* **With Namespace**: true
* **Remove XML Attributes**: false
* **All Values As String**: false

#### **Saída**

```json
{
  "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 <a href="#h_5ccda188f2" id="h_5ccda188f2"></a>

#### **Entrada**

**Parâmetros**

* **XML Field Path:** xmlField
* **Preserve Original**: false
* **With Namespace**: false
* **Remove XML Attributes**: true
* **All Values As String**: false

#### **Saída**

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

### Transformação de XML com parâmetro "All Values As String" ativado <a href="#h_18c937c5db" id="h_18c937c5db"></a>

#### **Entrada**

**Parâmetros**

* **XML Field Path:** xmlField
* **Preserve Original**: false
* **With Namespace**: false
* **Remove XML Attributes**: true
* **All Values As String**: true

#### **Saída**

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

### Transformation XML com o parâmetro “Escape Special Characters” habilitado

#### Entrada

```json
{
  "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<relatorio_vendas>\n  <empresa>Soluções &amp; Cia Ltda.</empresa>\n  <data_geracao>2025-10-13</data_geracao>\n  \n  <produto id=\"A101\">\n    <nome>Placa de Vídeo TurboX</nome>\n    <estoque>50</estoque>\n    <avaliacao>4.5</avaliacao>\n    <comparacao>Performance &gt; Preço</comparacao>\n  </produto>\n  \n  <produto id=\"B202\">\n    <nome>Processador Velox 9</nome>\n    <estoque>35</estoque>\n    <avaliacao>4.8</avaliacao>\n    <comparacao>Custo &lt; Benefício</comparacao>\n  </produto>\n  \n  <observacoes>\n    Revisar o pedido #PO-789 &amp; o #PO-790.\n    A meta de vendas é &gt; 100 unidades para o Processador Velox 9.\n    O custo deve ser &lt; $500 por unidade.\n  </observacoes>\n  \n</relatorio_vendas>"
}

```

**Parâmetros**

* **XML Field Path: `xmlField`**
* **Preserve Original**: false
* **With Namespace**: false
* **Remove XML Attributes**: false
* **All Values As String**: false
* **Escape Special Characters:** true

#### Saída

```json
{
  "xml": {
    "relatorio_vendas": {
      "observacoes": "    Revisar o pedido #PO-789 & o #PO-790.\n    A meta de vendas é > 100 unidades para o Processador Velox 9.\n    O custo deve ser < $500 por unidade.\n ",
      "produto": [
        {
          "estoque": 50,
          "comparacao": "Performance > Preço",
          "nome": "Placa de Vídeo TurboX",
          "id": "A101",
          "avaliacao": 4.5,
          "content": [
            "   ",
            "   ",
            "   ",
            "   ",
            " "
          ]
        },
        {
          "estoque": 35,
          "comparacao": "Custo < Benefício",
          "nome": "Processador Velox 9",
          "id": "B202",
          "avaliacao": 4.8,
          "content": [
            "   ",
            "   ",
            "   ",
            "   ",
            " "
          ]
        }
      ],
      "empresa": "Soluções & Cia Ltda.",
      "content": [
        " ",
        " ",
        "  \n ",
        "  \n ",
        "  \n ",
        "  "
      ],
      "data_geracao": "2025-10-13"
    }
  }
}

```
