Privacy-first XML formatter. 100% local, zero dependencies, zero compromise.
XMLShield es una herramienta de formateo y minificación de XML que funciona completamente en tu navegador, sin enviar datos a ningún servidor. Diseñada en respuesta a preocupaciones sobre la seguridad de herramientas online, XMLShield te da control total sobre tus archivos XML sensibles.
- ✅ 100% Local - Funciona completamente offline
- ✅ Cero Dependencias - Sin CDN, npm o código de terceros
- ✅ Sin Telemetría - No envía datos a ningún servidor
- ✅ Auditable - Todo el código en un solo archivo de ~50KB
- ✅ No requiere instalación - Abre y usa
- ✨ Formateo XML con indentación configurable (espacios o tabs)
- 📦 Minificación inteligente con opciones avanzadas
- 🔁 Conversión XML ⇄ JSON con autodetección de la entrada
- 📊 Conversión XML → CSV para datos tabulares (detecta el elemento repetido)
- 🧭 XPath queries con
document.evaluate()nativo —//tag[@attr='x'],count(), etc. - ♻️ Buscar y reemplazar en la entrada, integrado con Deshacer
- 🆚 Diff semántico entre dos XML — ignora orden de atributos y espacios
- 🎨 Resaltado de sintaxis XML y JSON sin dependencias externas
- 👁️ Vista triple - Sintaxis resaltada, texto plano o árbol colapsable (XML y JSON)
- 🔍 Búsqueda con highlight y navegación entre coincidencias
- 🔢 Líneas numeradas en ambos editores, sincronizadas con el scroll
- 📊 KPIs en tiempo real - Tamaño, ahorro, elementos, atributos y profundidad
- 💾 Descarga de resultados con timestamp
- 📋 Copiar al portapapeles como texto o string escapado (JS, Python, Java)
- 🎨 5 temas visuales - Claro, Oscuro, Alto Contraste, Solarized y Monokai (+ tema automático según el sistema)
- 🔗 Presets de configuración vía URL compartibles
- 📤 Compartir documento por enlace - gzip nativo + hash que nunca viaja al servidor
- ♻️ Reemplazo con regex - grupos
$1, $2...en el reemplazo (opcional) - ♿ Accesible - roles ARIA, foco visible por teclado en los 5 temas
- ✓ Validación en vivo - Indicador ✓/✗ con línea del error mientras escribes
- ⬆️ Encadenar operaciones - Botón "Reusar salida" (formatear → convertir → minificar)
- ⌨️ Atajos de teclado para flujo de trabajo rápido (incluye Ctrl+G ir a línea)
- 🎯 Drag & drop y botón Abrir - Archivos .xml y .json, también en móvil
- 💾 Recordar configuración - Opt-in explícito, 100% local, se borra al desmarcar
- Panel dividido lado a lado
- Gradientes modernos
- Responsive design (móvil/tablet/desktop)
- Feedback visual en todas las acciones
- Descarga
index.html - Abre con doble clic (no requiere servidor web)
- Pega tu XML o arrastra un archivo
- ¡Listo! Formatea o minifica con un click
- Ve a
https://luisfemojica.github.io/xmlshield/ - Agrega a favoritos para uso offline
- Funciona sin conexión después de la primera carga
- Pega tu XML en el panel izquierdo
- Ajusta sangría (espacios o tabs)
- Click en "✨ Formatear" o presiona
Ctrl+Enter - Resultado aparece en panel derecho
- Pega tu XML en el panel izquierdo
- Configura opciones de minificado
- Click en "📦 Minificar" o presiona
Ctrl+M - XML comprimido aparece a la derecha
- Click en "💾 Descargar"
- Se descarga como:
xml_formatted_[timestamp].xml
| Atajo | Acción |
|---|---|
Ctrl + Enter |
Formatear XML |
Ctrl + M |
Minificar XML |
Ctrl + B |
Cambiar vista (Resaltada/Texto/Árbol) |
Ctrl + O |
Abrir archivo |
Ctrl + F |
Buscar en la salida |
Ctrl + H |
Buscar y reemplazar en la entrada |
Ctrl + L |
Limpiar editores |
Ctrl + G |
Ir a línea específica |
Tab (en el editor) |
Insertar sangría |
Ctrl + Z |
Deshacer (fuera del editor) |
Ctrl + Y |
Rehacer (fuera del editor) |
- Sangría (0-16): Define número de espacios de indentación
- Usar tabs: Checkbox para usar tabuladores en lugar de espacios
- Conservar espacios: No normaliza espacios en nodos de texto al formatear
- Conservar espacios en texto: No modifica espacios dentro de contenido textual
- Compactar atributos: Elimina espacios redundantes en atributos
XMLShield está diseñado para:
- ✅ Desarrolladores formateando XMLs de configuración (Spring, Maven, web.xml)
- ✅ Analistas de datos limpiando exportaciones XML de APIs o bases de datos
- ✅ SysAdmins validando archivos de configuración antes de deploy
- ✅ Estudiantes aprendiendo XML y visualizando estructura
- ✅ Equipos con datos sensibles (GDPR, HIPAA) que no pueden usar herramientas cloud
- ✅ Cualquier persona que valore privacidad sobre conveniencia
- XMLs de configuración (<5MB)
- Exportaciones de APIs o bases de datos
- Archivos de infraestructura sensibles
- Validación de sintaxis XML
- Aprendizaje y experimentación
- XMLs muy grandes (>100MB) - Puede ser lento pero funciona
- Archivos complejos sin validación XSD (solo valida sintaxis)
- Validación contra schemas XSD/DTD → Usar herramientas especializadas
- Transformaciones XSLT complejas → Fuera del alcance
- Procesamiento batch automatizado → No es una CLI tool
✅ Sin conexión a Internet - El archivo funciona completamente offline
✅ Sin telemetría - No envía datos a ningún servidor
✅ Sin cookies - No almacena nada por defecto. Si activas "Recordar config" se guardan tus preferencias (sangría, tema, vista) en localStorage de tu navegador — nunca tu XML, nunca se envía a ningún lado, y se borra al desmarcar la casilla
✅ Sin CDN - No carga recursos externos que puedan ser comprometidos
✅ Código auditable - Todo el código está en un solo archivo visible (~1500 líneas)
✅ Sin dependencias - Cero librerías de terceros que puedan tener vulnerabilidades
⚠️ Los archivos procesados quedan en la memoria del navegador hasta cerrar la pestaña⚠️ No hay límite de tamaño, pero archivos muy grandes (>100MB) pueden ralentizar el navegador- ✅ Compatible con normativas de privacidad (GDPR, HIPAA, etc.) por ser 100% local
En febrero de 2026, Notepad++ sufrió un incidente de seguridad que comprometió la confianza en herramientas que dependen de actualizaciones automáticas y CDNs externos. XMLShield nace como respuesta a esta necesidad: una herramienta que puedes auditar visualmente en minutos y usar con confianza total.
XMLShield v2.x se adhiere estrictamente a estos principios:
- Un solo archivo HTML - Facilita distribución, auditoría y uso offline
- Cero dependencias externas - Sin CDN, npm, ni código de terceros
- Auditable en minutos - Cualquier desarrollador puede revisar todo el código
- Funciona offline - Sin conexión a internet requerida
- Sin telemetría - Cero rastreo, cero cookies, cero envío de datos
Para mantener la simplicidad y auditabilidad:
| Aspecto | Estado Actual v2.3 | Límite Máximo v2.x |
|---|---|---|
| Líneas de código | ~1470 | ~2500 |
| Tamaño del archivo | ~50KB | 100KB (límite duro) |
| Tiempo de auditoría | ~30 minutos | 45 minutos |
| Dependencias externas | 0 | 0 |
Toda nueva feature debe pasar mínimo 3 de 4 preguntas:
- ✅ ¿Lo necesita el 80% de los usuarios?
- ✅ ¿Se puede implementar en <200 líneas?
- ✅ ¿Mantiene el archivo auditable visualmente?
- ✅ ¿Funciona 100% offline sin setup?
Fecha: Febrero 2026
Refactorización completa con diseño moderno, panel dividido, gradientes, modo oscuro mejorado, KPIs con emojis, y descarga de archivos.
Fecha: Junio 2026
- ✅ Errores detallados con número de línea
- ✅ Undo/Redo básico (memoria de sesión)
- ✅ Estadísticas del documento (elementos, profundidad, atributos)
- ✅ Líneas numeradas en editores
- ✅ Advertencia para archivos grandes (>50MB)
Fecha: Junio 2026
- ✅ Conversión XML ⇄ JSON (autodetecta la entrada)
- ✅ Búsqueda mejorada con highlight y navegación
- ✅ Presets de configuración vía URL (
?indent=4&theme=monokai&view=arbol) - ✅ Copiar como string escapado (JS, Python, Java)
Fecha: Junio 2026
- ✅ Vista de árbol colapsable (solo lectura)
- ✅ Ir a línea específica (Ctrl+G)
- ✅ Temas visuales adicionales (High Contrast, Solarized, Monokai)
Fecha: Junio 2026
- ✅ Bugfixes: declaración XML perdida al formatear/minificar, resaltado de tags con atributos, minify vs CDATA/comentarios
- ✅ Harness de tests de regresión (
tests.html, solo desarrollo — 42 tests) - ✅ Botón "Reusar salida" (encadenar operaciones)
- ✅ Botón "Abrir archivo" (soporte móvil, acepta .xml y .json)
- ✅ Validación en vivo con indicador ✓/✗ y línea del error
- ✅ Tema automático según el sistema (
prefers-color-scheme) - ✅ Recordar configuración (opt-in, 100% local)
Fecha: Junio 2026 (adelantado sobre Q3)
- ✅ XPath queries (con
document.evaluate()nativo del navegador) - ✅ Buscar y reemplazar en la entrada (integrado con Undo)
- ✅ Conversión XML → CSV para datos tabulares (escapado RFC 4180)
- ✅ Ordenar atributos y eliminar comentarios al minificar (opciones)
Fecha: Junio 2026 (adelantado sobre Q4)
- ✅ Diff/comparación semántica de XMLs (ignora orden de atributos y espacios)
Fecha: Junio 2026
- ✅ Layout móvil real: paneles apilados y página con scroll (antes los editores quedaban inusables)
- ✅ Botón "📄 Ejemplo" y preset
?demo=1para onboarding - ✅ Formatear/Minificar también embellecen y compactan JSON
- ✅ La línea del error se marca en rojo en el gutter
- ✅ Árbol interactivo: contador de hijos y click en un tag → su ruta XPath
- ✅ Modo comparar acepta abrir/arrastrar archivo para el XML B
- ✅ KPIs con unidades legibles (B/KB/MB), favicon, atajos Ctrl+O/F/H y Tab con sangría
- ✅ CI en GitHub Actions: la suite corre headless en cada PR
Fecha: Junio 2026
- ✅ Resaltado de sintaxis JSON en la vista Resaltada
- ✅ Árbol colapsable para JSON (objetos, arrays, contadores)
- ✅ Estadísticas para JSON en los KPIs
- ✅ Descarga con extensión correcta (.json/.csv/.txt)
Fecha: Junio 2026
- ✅ Compartir documento por URL (gzip nativo en el hash, 100% local)
- ✅ Regex con grupos en buscar y reemplazar
- ✅ JSONPath al hacer click en el árbol JSON
- ✅ Accesibilidad: ARIA + foco visible por teclado
🎉 Roadmap v2.x completado de principio a fin — ~2277 líneas | ~88KB (límite duro: 100KB) | 92 tests de regresión con CI.
Proyecto separado con features avanzadas:
- Validación XSD básica
- Diff/comparación de XMLs
- XPath queries simples
- Web Workers para procesamiento
Este proyecto mantiene documentación exhaustiva para guiar su desarrollo:
-
SCOPE.md - ⭐ Definición de Alcance
- Qué está dentro y fuera de XMLShield v2.x
- Límites técnicos estrictos
- Test de 4 Preguntas para evaluar features
- Casos de uso cubiertos y no cubiertos
-
ROADMAP.md - 📅 Plan de Versiones
- Timeline detallado (v2.1, v2.2, v2.3)
- Features planificadas con estimaciones
- Criterios de éxito por versión
- Métricas de progreso
-
CONTRIBUTING.md - 🤝 Guía de Contribución
- Cómo proponer features
- Guías de código y estándares
- Templates para Issues y PRs
- Proceso de contribución
-
GUIA_DOCUMENTACION.md - 📚 Índice de Documentación
- Cómo usar cada documento
- Escenarios comunes
- Checklist de contribución
Si quieres usar XMLShield:
- Lee este README.md completo
- Descarga
index.htmly úsalo
Si quieres contribuir:
- Lee SCOPE.md - Entiende la filosofía
- Revisa ROADMAP.md - Ve qué está planificado
- Sigue CONTRIBUTING.md - Aprende el proceso
Si tienes una idea de feature:
- Aplica el Test de 4 Preguntas (en SCOPE.md)
- Revisa si ya está en el ROADMAP
- Abre un Issue siguiendo el template
- Errores con número de línea
- Estadísticas del documento
- Conversión XML ⇄ JSON
- Vista de árbol navegable
- Temas adicionales
- Bugfixes + 68 tests de regresión
- Validación en vivo, abrir archivo (móvil), encadenar operaciones
- XPath, buscar y reemplazar, XML → CSV
- Diff semántico de XMLs
- Validación XSD, Web Workers y PWA quedan descartados definitivamente: requieren romper los principios del proyecto (un archivo, cero dependencias, auditable). Para eso existen
xmllint, Oxygen XML o XMLSpy. - El desarrollo continúa en la línea v2.x con mejoras incrementales.
- Soporte DTD (legacy, complejo)
- XSLT transformations (requiere motor completo)
- Web Workers (rompe concepto de un solo archivo)
- Múltiples pestañas (state management complejo)
- Sistema de plugins (rompe simplicidad)
- Aplicaciones nativas (Electron, CLI, extensión)
¿Por qué tan restrictivo? La simplicidad ES nuestra feature principal. XMLShield v2.x debe "simplemente funcionar" para el 95% de casos sin explicaciones, curva de aprendizaje, o riesgos de seguridad.
Para features más avanzadas, considera XMLShield Extended (v3.0+) o herramientas enterprise como Oxygen XML o XMLSpy.
- ✅ Chrome 90+
- ✅ Firefox 88+
- ✅ Safari 14+
- ✅ Edge 90+
- ❌ Internet Explorer (obsoleto)
- ❌ Navegadores muy antiguos (>3 años)
- DOMParser API (validación XML nativa)
- XMLSerializer API (serialización)
- Clipboard API (copiar al portapapeles)
- File API (drag & drop)
- CSS Grid y Flexbox (layout moderno)
- ✅ Botón "📤 Compartir doc": el documento viaja comprimido (gzip nativo) en el hash del enlace — nunca se envía a ningún servidor
- ✅ Checkbox "regex" en buscar y reemplazar, con grupos
$1, $2... - ✅ Click en una clave del árbol JSON copia su ruta JSONPath (
$.tienda.libros[0]) - ✅ Accesibilidad:
role="alert"en errores,aria-liveen la validación,aria-labelen iconos, foco visible por teclado
- ✅ Resaltado de sintaxis para JSON: claves, strings, números y booleanos con colores (5 temas)
- ✅ Vista de árbol para JSON: objetos y arrays colapsables con contador de claves/elementos
- ✅ Estadísticas también para JSON (valores, claves, profundidad)
- ✅ Descargar usa la extensión y MIME correctos: .json, .csv o .txt según la salida
- ✅ Layout móvil real: paneles apilados a ancho completo y página con scroll
- ✅ Botón "📄 Ejemplo" en el panel de entrada + preset
?demo=1 - ✅ Formatear y Minificar detectan JSON y lo embellecen/compactan
- ✅ La validación en vivo marca la línea del error en rojo en el gutter
- ✅ Árbol interactivo: contador de hijos y click en un tag copia su ruta XPath al campo de consulta
- ✅ El modo comparar acepta abrir o arrastrar archivo para el XML B
- ✅ KPIs con unidades legibles (B/KB/MB), favicon inline, atajos Ctrl+O/F/H y Tab con sangría
- ✅ CI con GitHub Actions: los 77 tests corren headless en cada push y PR
- ✅ Screenshot del README regenerado con la app actual
- ✅ Diff semántico entre dos XML con rutas tipo XPath y marcadores ➕/➖/✏️ (ignora orden de atributos y espacios)
- ✅ Scrollbars visibles en editores (el scroll horizontal nativo era casi invisible)
- ✅ XPath queries sobre la entrada con resultados en la salida (
//tag, predicados,count(),//@attr,text()) - ✅ Buscar y reemplazar en la entrada: siguiente desde el cursor o todas, con Undo
- ✅ Conversión XML → CSV: tabula el elemento repetido dominante con escapado RFC 4180
- ✅ Opción "Ordenar atributos" (formatear y minificar)
- ✅ Opción "Quitar comentarios" al minificar
- ✅ Bugfix: la declaración XML y los comentarios top-level ya no se pierden al formatear/minificar
- ✅ Bugfix: el resaltado colorea los nombres de tags con atributos
- ✅ Bugfix: minificar ya no altera el contenido de CDATA, comentarios ni texto con
= - ✅ Suite de tests de regresión (
tests.html, 42 casos, solo desarrollo) - ✅ Botón "Abrir archivo" (.xml/.json) — funciona en móvil
- ✅ Botón "Reusar salida" para encadenar operaciones
- ✅ Validación en vivo con línea y columna del error
- ✅ Tema automático según
prefers-color-scheme - ✅ Recordar configuración (opt-in con localStorage, 100% local)
- ✅ Vista de árbol colapsable de solo lectura (tercer modo del botón de vista)
- ✅ Ir a línea específica con Ctrl+G
- ✅ Temas visuales: Alto Contraste, Solarized y Monokai
- ✅ Conversión XML ⇄ JSON con autodetección de la entrada
- ✅ Búsqueda con resaltado de coincidencias y navegación anterior/siguiente
- ✅ Presets de configuración vía URL + botón "Copiar config"
- ✅ Copiar la salida como string escapado (JS, Python, Java)
- ✅ Errores XML con número de línea y columna exactos
- ✅ Undo/Redo básico con Ctrl+Z / Ctrl+Y (memoria de sesión)
- ✅ Estadísticas del documento: elementos, atributos y profundidad
- ✅ Líneas numeradas en ambos editores, sincronizadas con el scroll
- ✅ Advertencia y confirmación para archivos grandes
- ✅ Refactorización completa del diseño
- ✅ Panel dividido lado a lado
- ✅ Gradientes modernos en header
- ✅ Botón de descarga de archivos
- ✅ Mejoras en modo oscuro
- ✅ Responsive design mejorado
- ✅ KPIs con emojis
- ✅ Feedback visual en acciones
- ✅ Formateo XML con DOMParser
- ✅ Minificación inteligente
- ✅ Resaltado de sintaxis
- ✅ Vista alternativa texto/resaltada
- ✅ Drag & drop
- ✅ KPIs en tiempo real
- ✅ Modo oscuro
- ✅ 3 atajos de teclado
Este proyecto valora las contribuciones que mantienen su filosofía de simplicidad y seguridad.
-
Lee la documentación:
- SCOPE.md - Entiende qué está en alcance
- ROADMAP.md - Ve qué está planificado
- CONTRIBUTING.md - Sigue el proceso
-
Verifica el alcance:
- Aplica el Test de 4 Preguntas
- ¿Pasa 3/4? → Continúa
- ¿No pasa? → Considera XMLShield Extended (v3.0+)
-
Propón tu idea:
- Abre un Issue con el template
- Espera feedback del mantenedor
- Si es aceptada, implementa siguiendo las guías
- ✅ Mantener el principio de "un solo archivo HTML"
- ✅ No agregar dependencias externas (CDN, npm, etc.)
- ✅ Mantener compatibilidad con navegadores modernos
- ✅ Documentar cambios en el código
- ✅ Actualizar el Changelog
- ✅ No exceder límites: ~2500 líneas, 100KB (duro)
- ✅ Los tests de
tests.htmldeben pasar (servir conpython -m http.server)
Los contribuidores son reconocidos en:
- Esta sección del README
- Changelog de cada versión
- Comentarios del código (si aplica)
Contribuidores actuales:
- Luis Mojica - Creador y mantenedor principal
Este proyecto está en el dominio público. Úsalo libremente para cualquier propósito personal o comercial sin restricciones.
Disclaimer: Este software se proporciona "tal cual", sin garantías de ningún tipo, expresas o implícitas.
- Notepad++ Hijacking Incident (Febrero 2026)
- Supply Chain Attack Best Practices
- Local-First Software Movement
- Para validación XSD: XMLSpy, Oxygen XML Editor
- Para XSLT: xsltproc, Saxon
- Para procesamiento batch: xmllint, tidy
Sí. Todo el procesamiento ocurre en tu navegador. No se envía ningún dato a servidores externos. Puedes verificarlo auditando el código (son ~1500 líneas en un solo archivo) o monitoreando el tráfico de red (verás cero requests).
Esas herramientas envían tu XML a sus servidores. Si trabajas con datos sensibles, regulados o confidenciales, esto puede violar políticas de privacidad o compliance.
Sí, 100%. Después de descargar index.html, puedes usarlo completamente offline. No requiere conexión a internet en ningún momento.
Añadir un validador XSD completo requeriría ~2000+ líneas de código, rompiendo nuestro principio de simplicidad y auditabilidad. Para eso existen herramientas especializadas. XMLShield se enfoca en hacer una cosa muy bien: formatear y minificar XML de forma segura.
Absolutamente. Al ser dominio público y 100% local, cumple con la mayoría de políticas de seguridad corporativa. Muchas empresas lo prefieren sobre herramientas cloud para archivos de configuración sensibles.
XMLShield puede procesarlos, pero puede ser lento ya que todo ocurre en memoria del navegador. Para archivos enormes, considera herramientas de línea de comandos como xmllint o tidy.
Simplicidad y seguridad. Un solo archivo es:
- Fácil de distribuir (email, USB, intranet)
- Fácil de auditar (lees todo en 30 minutos)
- Sin proceso de build que pueda ser comprometido
- Sin dependencias que puedan tener vulnerabilidades
¡Por supuesto! Solo mantén claro que es un fork y respeta la licencia de dominio público. Si añades features complejas (XSD, XSLT, etc.), considera llamarlo "XMLShield Extended" para diferenciarlo.
XMLShield existe porque creemos que las herramientas de desarrollo no deberían comprometer tu privacidad ni la de tus usuarios. En un mundo donde incluso editores de texto pueden ser comprometidos, necesitamos herramientas que podamos auditar, entender y confiar.
Simplicidad no es una limitación, es nuestra característica principal.
- Issues: Para reportar bugs o proponer features
- Discussions: Para preguntas generales e ideas
- Website: luisfemojica.com
- Email: Disponible en el website
XMLShield es gratuito y de código abierto. Si te resulta útil:
- ⭐ Dale una estrella en GitHub
- 🐛 Reporta bugs que encuentres
- 💡 Propón mejoras (que respeten el alcance)
- 📢 Compártelo con colegas que valoren privacidad
- 📝 Mejora la documentación
- 🤝 Contribuye código siguiendo las guías
No aceptamos donaciones. Preferimos contribuciones de código o documentación.
Última actualización: Marzo 2026
Versión: 2.1 (en progreso)
Autor: Luis Mojica
Licencia: Dominio Público
🛡️ Privacy First. Security First. Simplicity First. 🛡️
Made with ❤️ for developers who value privacy
