DataSeed XML
Editor visual de XML para o VS Code, sem sair do arquivo.
Abra qualquer XML e clique em Abrir no DataSeed XML no topo do editor. Ao lado do texto abre um painel. O que você muda no painel vai direto para o arquivo, e o que você muda no texto aparece no painel.
- Qualquer XML abre direto na estrutura: a árvore do documento, com filtro, para editar valores e inserir, duplicar ou remover tags.
- NF-e e CT-e ganham, além da estrutura, abas com os campos da nota, geração de dados de teste e a chave de acesso.
É a versão para VS Code do editor de XML do DataSeed, com a mesma identidade visual. O painel usa a paleta clara ou escura do site conforme o tema do VS Code.
NF-e e CT-e
No topo fica o resumo do documento: número, série, emitente → destinatário e total. As abas mostram só os campos mais usados; o resto fica em Mais campos, e o nome técnico e a documentação de cada campo aparecem ao passar o mouse.
| Aba |
|
| Geral |
Natureza da operação, série, número, datas, tipo, finalidade e ambiente. Campos codificados viram listas com a descrição de cada código |
| Participantes |
Emitente, destinatário, remetente, expedidor, recebedor e transportadora: CNPJ/CPF, nome e IE, com endereço e contato recolhidos |
| Itens |
Produtos (<det>) e volumes (<vol>) em tabelas. Duplicar e remover item renumera nItem e refaz os totais |
| Totais |
Total da nota e dos produtos em destaque; impostos e outros valores recolhidos. Botão para recalcular a partir dos itens |
| Chave |
A chave em partes coloridas (o nome de cada parte aparece ao passar o mouse) e uma chave nova a partir do número e do código |
| Estrutura |
A árvore inteira do XML, guiada pelo schema oficial (veja abaixo) |
Recálculos:
- Com Recalcular totais ligado (padrão, na aba Itens), mudar
qCom ou vUnCom atualiza o vProd do item e depois ICMSTot/vProd e vNF.
qTrib, uTrib e vUnTrib acompanham os campos comerciais correspondentes.
Gerar dados de teste
Ao passar o mouse sobre um campo que tem gerador, aparece um botão ✦ dentro dele. Clicar troca o valor por um fictício e válido, com os mesmos geradores do DataSeed:
| O que gerar |
Como |
| Um campo |
✦ no campo: CNPJ e CPF com DV válido, IE, razão social, nome fantasia, endereço, CEP, telefone, e-mail, natureza da operação, data de emissão, código, CFOP, quantidade, valor unitário, espécie do volume… |
| Um participante |
Gerar outro na seção do participante: CNPJ, IE, nome, endereço e contato de uma vez |
| Um item |
✦ na linha do produto: descrição e NCM reais, código, unidade, quantidade e valor, com total e totais refeitos |
| A nota inteira |
Nova nota (ou Novo CT-e) na barra do topo: participantes, itens, natureza, datas, número e chave novos, mantendo a estrutura do XML |
Campos que dependem uns dos outros mudam juntos:
- município, código IBGE e UF sempre batem;
- trocar o CNPJ do emitente ou a data de emissão refaz a chave de acesso, que contém os dois;
- o emitente regenerado continua na mesma UF, porque a UF também está na chave;
- na nota inteira nova,
cUF e o município de origem seguem a cidade do novo emitente.
Tudo vira uma edição normal no arquivo. Ctrl+Z desfaz.
A aba Estrutura usa os XSDs oficiais da NF-e 4.00 (pacote PL_010, com IBS/CBS) e do CT-e 4.00 (PL_CTe_400_RTC, incluindo CT-e OS, CT-e Simplificado, GTV-e e os modais):
- + em cada grupo abre as tags que o schema permite ali, com a descrição oficial de cada uma. As obrigatórias que faltam aparecem primeiro. Escolhas já feitas são respeitadas: com
CNPJ no emitente, CPF não é sugerido; com ICMS40, nenhum outro grupo de ICMS.
- A tag nova entra na posição exigida pelo schema, com a indentação do arquivo, e não no fim do grupo.
- Grupos já nascem com os filhos e atributos obrigatórios.
obsCont vem com xCampo e xTexto, NFref com refNFe.
- Campos com valores fixos no schema (
indTot, modFrete…) são escolhidos numa lista.
- Duplicar aparece em tudo o que o schema permite repetir:
det, detPag, NFref, vol, obsCont, autXML…
- Obrigatórios ausentes são sinalizados no grupo com um aviso (“falta 1”), que abre o + direto.
- Tags fora do schema também podem ser digitadas; elas vão para o fim do grupo. Em XML que não é NF-e nem CT-e, a inserção é livre.
- Passar o mouse sobre o nome de uma tag mostra a documentação oficial dela.
Chave de acesso
A aba Chave mostra a chave dividida em partes coloridas (UF, ano/mês, CNPJ, modelo, série, número, tipo de emissão, código e DV).
A chave é sempre montada a partir do documento. Se algum trecho não bate com o XML (por exemplo, o cUF foi editado à mão), aparece um aviso no topo com o botão Corrigir chave, que remonta a chave e atualiza Id, cDV, assinatura, protocolo e QR Code.
No editor de texto:
- Passar o mouse sobre uma chave de 44 dígitos mostra UF, ano e mês, CNPJ, modelo, série, número e DV.
- Chaves inconsistentes aparecem como aviso (sublinhadas e na aba Problemas): DV errado, trechos da chave diferentes do documento (
cUF, mês de emissão, CNPJ do emitente, série, número, código, cDV) ou protocolo com outra chave.
O painel não regrava o XML inteiro. Cada edição troca só o trecho afetado, então:
- XML em linha única, como sai da SEFAZ, continua em linha única;
- indentação, quebras de linha (LF/CRLF), comentários e ordem dos atributos ficam como estão;
- Ctrl+Z, Ctrl+S e o indicador de arquivo modificado funcionam normalmente;
- o diff no git mostra só os valores alterados.
A assinatura digital não é refeita. Qualquer edição invalida a assinatura de um XML autorizado. Use a extensão para testes, homologação e integração, não para mandar documento editado à SEFAZ.
Como abrir
- Botão Abrir no DataSeed XML no topo do editor, em qualquer arquivo XML;
- clique direito num
.xml no Explorer → Abrir no DataSeed XML;
Ctrl+Shift+P → DataSeed XML: Abrir arquivo XML…;
- clique direito na aba do arquivo → Reabrir Editor Com… → DataSeed XML;
- XML colado num arquivo sem título, ou arquivos com outra extensão reconhecidos como XML (
.xsd, .config…), também funcionam.
No painel, o botão no canto superior direito mostra o texto do XML ao lado.
Configurações
| Configuração |
Padrão |
|
dataseedXml.autoRecalc |
true |
Recalcula vProd do item e os totais ao mudar quantidade ou valor unitário |
dataseedXml.keyDiagnostics |
true |
Avisos de chave de acesso inconsistente no editor de texto |
Desenvolvimento
npm install
npm test # compila e roda os testes (node:test)
# F5 no VS Code → "Run Extension" (abre com test-fixtures/)
npm run package # gera dataseed-xml-<versão>.vsix
# Atualizar os schemas oficiais:
node scripts/fetch-schemas.js # baixa os XSDs (ajuste o pacote no script)
npm run schema # recompila src/core/schema/*.json
src/
core/ lógica pura, sem VS Code (testada com node:test)
xmlTree.ts parser que guarda a posição de cada tag e atributo
xmlEdit.ts edições por trecho: valor, atributo, inserir, duplicar, remover
fiscalDoc.ts modelo de campos da NF-e/CT-e e as ações do painel
docOps.ts totais, itens e montagem da chave a partir do documento
generate.ts regeneração de campo, participante, item e nota inteira
generators.ts geradores de dados fictícios (portados do DataSeed)
accessKey.ts chave de acesso: DV, leitura e recálculo
textDiff.ts diff por tokens que vira edições pequenas no documento
schema.ts consulta aos schemas: tipo de cada nó, ordem, sugestões, obrigatórios
schema/*.json XSDs oficiais compilados (gerados por tools/buildSchema.ts)
tools/
buildSchema.ts compila schemas/ em src/core/schema/*.json
FieldsView.ts editor customizado: liga o webview ao documento
keyFeatures.ts hover, avisos e o contexto do botão
extension.ts comandos e registro
media/ webview (fields.js, fields.css), logo e ícone; vendor/ é copiado no build
scripts/ copy-assets.js: codicons e fontes; fetch-schemas.js: baixa os XSDs oficiais
schemas/ XSDs oficiais da NF-e e do CT-e (origem em schemas/*/SOURCE.txt)
test-fixtures/ NF-e e CT-e de exemplo gerados pelo DataSeed
| |