Stream XML File Reader
Saiba mais sobre o conector Stream XML File Reader e como utilizá-lo na Digibee Integration Platform.
O Stream XML File Reader lê um arquivo XML local e identifica nós de acordo com o target node e os context fields configurados. Para cada nó encontrado, ele gera uma estrutura XML junto com suas propriedades de contexto e aciona subpipelines para processar cada mensagem resultante de forma independente. Esse conector é usado para ler e processar grandes arquivos XML de maneira eficiente, em partes, sem carregar o arquivo inteiro na memória.
Parâmetros
Configure o conector utilizando os parâmetros abaixo. Campos que aceitam expressões Double Braces estão marcados na coluna Suporta DB.
Alias
Nome (alias) para o output deste conector, permitindo referenciá-lo posteriormente no fluxo usando expressões Double Braces.
String
✅
stream-xml-f-reader-1
File name
Nome do arquivo ou caminho completo (por exemplo, tmp/processed/file.txt) do arquivo XML local.
String
✅
N/A
Charset
Nome do conjunto de caracteres para leitura do arquivo.
String
❌
UTF-8
Node Path
Caminho do nó desejado a ser lido a partir do arquivo XML (//root/level1/level2/desirednode).
String
✅
N/A
Context Paths
Define os caminhos das tags que representam campos que adicionam contexto ao nó desejado (//root/node1/code ou //root/node2/description).
String
❌
N/A
Ignore Paths
Define os caminhos que serão ignorados e não retornados dentro do nó desejado (//root/node1/email,//root/node2/city).
String
❌
N/A
Ignore Nested Child Nodes
Quando ativado, ignora nós filhos aninhados (que não sejam filhos diretos do target node). Nesse caso, apenas nós no mesmo nível do target node são retornados, enquanto nós mais profundos são excluídos.
Boolean
❌
N/A
Element Identifier
Atributo que será enviado em caso de erros.
String
❌
N/A
Parallel Execution Of Each Iteration
Ocorre em paralelo com a execução do loop.
Booleano
❌
N/A
Remove whitespaces
Quando ativado, remove espaços em branco no início e no final de todos os valores de caracteres XML.
Booleano
❌
N/A
Coalesce
Quando ativado, os valores de caracteres XML são lidos como uma única string.
Booleano
❌
N/A
Escape Special Characters
Quando ativado, faz o escape automático de caracteres reservados do XML (&, <, >) para evitar erros de parsing durante a transformação dos dados.
Booleano
❌
N/A
Tolerate Invalid XML
Quando ativado, retorna um objeto JSON alternativo em vez de lançar uma exceção para XML inválido.
Booleano
❌
N/A
Fail On Error
Quando ativado, interrompe a execução do pipeline caso ocorra um erro crítico durante a iteração. Não se aplica a erros em conectores utilizados dentro de subpipelines (onProcess e onException).
Booleano
❌
N/A
Use o parâmetro Remove Whitespaces com cuidado para evitar alterar a integridade dos dados, pois ele remove espaços em cada etapa de processamento. Para evitar esse problema, combine-o com Coalesce, que lê os valores de caracteres como um bloco único. No entanto, lembre-se de que Coalesce pode aumentar o uso de recursos ao processar grandes volumes de dados.
Fluxo de mensagens
Entrada
Nenhuma mensagem de entrada específica é necessária. No entanto, um arquivo XML válido deve existir no diretório local do pipeline, e os campos File Name e Node Path devem estar corretamente configurados para o processamento.
Saída
{
"total": 0,
"success": 0,
"failed": 0
}total: Número total de linhas processadas.success: Número total de linhas processadas com sucesso.failed: Número total de linhas cujo processamento falhou.
File handling and Batch processing
O conector lança uma exceção se o File Name não existir ou não puder ser lido.
O manuseio de arquivos dentro de um pipeline é protegido: todos os arquivos são acessados por meio de um diretório temporário, e cada pipeline key tem acesso apenas ao seu próprio conjunto de arquivos.
O Stream XML File Reader realiza batch processing, o que significa que ele processa dados continuamente em lotes menores e controlados, garantindo melhor eficiência e uso de recursos.
Event Handling: Unsupported Events
O Stream XML File Reader usa um mecanismo de leitura baseado em eventos, no qual cada tipo de dado no arquivo XML é tratado como um evento a ser processado. No entanto, alguns tipos de evento não são suportados durante o streaming — ou seja, não são tratados pelo conector:
PROCESSING INSTRUCTION
START DOCUMENT
END DOCUMENT
SPACE
ENTITY REFERENCE
ENTITY DECLARATION
DTD
NOTATION DECLARATION
Stream XML File Reader em Ação
Os cenários a seguir estão utilizando como base o seguinte arquivo XML:
File name: file.xml
Conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<list-info qty="4">products</list-info>
<products>
<product>
<price>20.75</price>
<product>Chair</product>
<tags>
<element>NEW</element>
<element>FURNITURE</element>
</tags>
</product>
<product>
<price>399.99</price>
<product>TV</product>
<tags>
<element>NEW</element>
<element>FURNITURE</element>
</tags>
</product>
<product>
<price>100</price>
<product>Couch</product>
<tags>
<element>NEW</element>
<element>FURNITURE</element>
</tags>
</product>
<product>
<price>78.99</price>
<product>Table</product>
<tags>
<element>NEW</element>
<element>FURNITURE</element>
</tags>
</product>
</products>
</root>Realizando o stream do arquivo informando o nó desejado
Entrada
File Name: file.xml
Node Path: //root/products/product
Saída
{
"total": 4,
"success": 4,
"failed": 0
}Cada elemento identificado pelo caminho do nó desejado será processado de forma independente:
Primeiro subfluxo:
{
"node":"<product><price>20.75</price><product>Chair</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Segundo subfluxo:
{
"node":"<product><price>399.99</price><product>TV</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Terceiro subfluxo:
{
"node":"<product><price>100</price><product>Couch</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Quarto subfluxo:
{
"node":"<product><price>78.99</price><product>Table</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Realizando o stream do arquivo informando o nó desejado e campos de contexto
Entrada
File Name: file.xml
Node Path: //root/products/product
Context Paths: //root/list-info
Saída
{
"total": 4,
"success": 4,
"failed": 0
}Cada elemento identificado pelo caminho do nó desejado será processado de forma independente:
Primeiro subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>20.75</price><product>Chair</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Segundo subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>399.99</price><product>TV</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Terceiro subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>100</price><product>Couch</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Quarto subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>78.99</price><product>Table</product><tags><element>NEW</element><element>FURNITURE</element></tags></product>"
}Realizando o stream do arquivo informando o nó desejado, campos de contexto e nós à serem ignorados
Entrada
File Name: file.xml
Node Path: //root/products/product
Context Paths: //root/list-info
Ignore Paths: //root/products/product/tags
Saída
{
"total": 4,
"success": 4,
"failed": 0
}Cada elemento identificado pelo caminho do nó desejado será processado de forma independente:
Primeiro subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>20.75</price><product>Chair</product></product>"
}Segundo subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>399.99</price><product>TV</product></product>"
}Terceiro subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>100</price><product>Couch</product></product>"
}Quarto subfluxo:
{
"context": {
"root": {
"list-info": {
"attributes": {
"qty": "4"
},
"value": "products"
}
}
},
"node": "<product><price>78.99</price><product>Table</product></product>"
}Realizando o stream do arquivo informando o nó desejado e ignorando nós filhos aninhados
Entrada
File Name: file.xml
Node Path: //root/products/product
Ignore Nested Child Nodes: ativado
Saída
{
"total": 4,
"success": 4,
"failed": 0
}Cada elemento identificado pelo caminho do nó desejado será processado de forma independente:
Primeiro subfluxo:
{
"data": {
"node": "<product><price>20.75</price><product>Chair</product><tags></tags></product>"
},
"success": true
}Segundo subfluxo:
{
"node": "<product><price>399.99</price><product>TV</product><tags></tags></product>"
}Terceiro subfluxo:
{
"node": "<product><price>100</price><product>Couch</product><tags></tags></product>"
}Quarto subfluxo:
{
"node": "<product><price>78.99</price><product>Table</product><tags></tags></product>"
}Atualizado
Isto foi útil?