Ver XML
El visor de XML muestra un documento como un árbol plegable en tu navegador. El árbol está virtualizado, así que una respuesta SOAP o un sitemap grandes se abren tan rápido como uno pequeño, y los atributos se muestran de forma distinta a los elementos hijos; esa distinción es justo la que hace legible un documento XML desconocido.
¿Cómo funciona Ver XML?
Nadie abre un visor de XML para un documento de veinte líneas. Se abre para una respuesta SOAP, un sitemap, un SVG, un POM de Maven o un archivo de configuración demasiado grande para leerlo como texto y demasiado anidado para seguirlo con el plegado de un editor de texto. Así que la única pregunta que importa es qué pasa cuando el documento es grande.
El árbol está virtualizado, así que el tamaño casi no importa
La implementación obvia renderiza un componente por nodo, lo que significa que un documento de cincuenta mil nodos produce cincuenta mil elementos DOM de los que quizá cuarenta están visibles. El desplazamiento va a tirones y la pestaña consume cientos de megabytes. Aquí el documento se aplana primero en un array de filas —cada una con su profundidad, su tipo y dónde termina su subárbol— y solo se renderizan las filas dentro del viewport. El DOM mantiene unos cincuenta elementos sin importar lo grande que sea el documento.
Registrar dónde termina cada subárbol es lo que hace barato el plegado: ocultar una rama es una comparación de índices en lugar de recorrer todo lo que hay dentro. Plegar la raíz de un documento enorme es instantáneo.
Los atributos se muestran separados de los elementos
XML tiene dos clases de miembros y la mayoría de los visores las aplanan en una sola, con lo que se pierde la distinción entre <line sku="X"/> y <line><sku>X</sku></line>. Los atributos aparecen con un prefijo @ para que ambos sobrevivan y ninguno sobrescriba al otro, algo que importa porque un elemento que lleva a la vez un atributo y un elemento hijo con el mismo nombre es habitual en los vocabularios reales.
La búsqueda cubre todo el documento, no solo la parte abierta
Una coincidencia enterrada en un subárbol plegado se encuentra y se muestra, con todos los ancestros del camino hasta ella, porque un valor sin su ruta no te dice nada sobre de dónde salió.
La entrada mal formada se nombra, no se adivina
Las etiquetas que no coinciden y los elementos sin cerrar producen un error que identifica la etiqueta y la línea. El XML truncado es lo más común que alguien pega en un visor —de hecho, es el motivo por el que lo está mirando—, así que un visor que renderiza algo plausible a partir de un documento roto resulta activamente contraproducente.
La vista con formato es aparte y sin pérdidas: reindenta sin tocar el contenido y conserva CDATA, comentarios, instrucciones de procesamiento y el texto exacto dentro de los elementos.
XML
<order id="1"><line sku="A" qty="2"/></order>
Árbol
▾ order { 2 }
@id "1"
▾ line { 2 }
@sku "A"
@qty "2"¿Qué opciones y casos límite admite Ver XML?
| Parámetro | Tipo | Valor predeterminado | Comportamiento y casos límite |
|---|---|---|---|
| Virtualización | solo en el viewport | — | En un momento dado existen en el DOM unas cincuenta filas, sea cual sea el tamaño del documento. Es la diferencia entre abrir un registro SOAP de 10 MB y colgar la pestaña. |
| Atributos | prefijo @ | se muestran | Se mantienen separados de los elementos hijos, así que un elemento que tenga un atributo sku y un hijo sku muestra ambos, sin que uno gane en silencio. |
| Nodos de texto | #text | se muestran | El texto de un elemento aparece en su propia fila en vez de colapsarse dentro del elemento, así que un elemento con texto e hijos muestra ambos. |
| Comentarios | #comment | se muestran | Se conservan, porque un comentario en un archivo de configuración suele ser la única documentación de por qué un valor es lo que es. |
| CDATA | literal | — | Se muestra tal cual. Las entidades dentro de una sección CDATA no son entidades, que es justo el propósito de esa construcción. |
| Espacios de nombres | conservado | prefijo conservado | soap:Body sigue siendo soap:Body, y las declaraciones xmlns aparecen como atributos. Quitarlos está disponible en el conversor de XML a JSON, donde es una elección de conversión, no de visualización. |
| Búsqueda | subcadena | sin distinguir mayúsculas de minúsculas | Coincide con nombres y valores en todo el documento, incluidas las ramas colapsadas, y conserva todos los ancestros de cada coincidencia para que la ruta siga visible. |
| Entrada malformada | error | con nombre | Las etiquetas sin pareja o sin cerrar se notifican con el nombre de la etiqueta y la línea. El árbol sigue mostrando el último documento válido en vez de quedarse en blanco mientras escribes. |
| Tamaño de entrada | bytes | 8 MB | La tokenización corre en el hilo principal. Por encima del límite, la herramienta se niega en vez de congelarse; el árbol en sí aguanta muchos más nodos de lo que ese límite permite. |
Preguntas frecuentes
¿Puede abrir una respuesta SOAP o un sitemap grande?
Hasta el techo de 8 MB, y el árbol no es el cuello de botella: renderiza solo lo que hay en pantalla, así que el número de nodos casi no le afecta. El límite es el tokenizador, que se ejecuta en el hilo principal y se niega a procesar más de 8 MB en lugar de intentarlo, porque intentarlo bloquea la pestaña durante segundos.
¿Por qué algunas filas empiezan con @?
Son los atributos. XML tiene atributos y elementos hijos; los árboles con forma de JSON tienen un solo tipo de miembro, así que se añade un prefijo a los atributos para mantenerlos diferenciados. Sin el prefijo, un elemento que llevara a la vez un atributo sku y un elemento hijo sku mostraría solo uno de los dos, y no habría forma de saber cuál.
¿Puedo editar el XML aquí?
Puedes editar el panel de texto y el árbol lo sigue, pero el árbol en sí es de solo lectura. Mantenerlo de solo lectura es lo que le permite seguir siendo rápido con documentos con los que un árbol editable sufriría: un árbol editable tendría que conciliar dos fuentes de verdad con cada pulsación. Para reindentar, usa la vista con formato o el formateador de XML.
Mi documento no es válido. ¿Por qué el árbol sigue mostrando algo?
Porque está mostrando la última versión que se parseó correctamente, así que una sola pulsación a mitad de la edición no deja la vista en blanco. El banner de error nombra la etiqueta que no coincide o sin cerrar y su línea. En cuanto el documento vuelva a parsearse, el árbol se actualiza.
¿La vista con formato cambia mi documento?
Cambia el espacio en blanco entre elementos y nada más. El contenido de texto, las secciones CDATA, los comentarios, las instrucciones de procesamiento y los valores de los atributos se conservan byte a byte. Ten en cuenta que el espacio en blanco entre elementos es significativo para un parser XML estricto, así que el documento reindentado no siempre es intercambiable con el original para una máquina, solo para una persona.
¿Se sube mi XML?
No. Tanto la tokenización como el renderizado ocurren en la pestaña que ya tienes abierta: abre DevTools, mira el panel «Network» y pega. Esto importa para XML más que para la mayoría de los formatos: lo que la gente realmente necesita leer es tráfico SOAP, aserciones SAML y mensajes financieros, que forman parte del material más sensible que maneja un desarrollador.