# 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](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) 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"
    }
  }
}

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/tools/xml-to-json-transformer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
