2009-07-17 16 views
17

Tengo un archivo XML de gran tamaño (90 MB) de Excel, guardado en formato XML Spreadsheet 2003. Contiene varios datos no válidos, por lo que Firefox escupe mensajes como este:Forma rápida de validar XML/Identificar punto de quebranto

Line Number 790402, Column 65: 
<Cell ss:StyleID="s18"><Data ss:Type="String">Here's some data I&#5;?Bnternational</Data></Cell> 

¿Existe una herramienta que va a analizar mi XML y dime lo que está mal con él, de una manera similar a Firefox? Firefox es bastante lento en analizarlo (presumiblemente porque lo mantiene todo en la memoria listo para convertirse en un buen árbol navegable). No me molesta la validación contra un XSD, solo quiero saber si el XML está bien formado.

+0

posible duplicado de (http://stackoverflow.com/questions/124865/xml-schema-xsd-validation-tool) – kenorb

+2

no, no es - Esta pregunta menciona explícitamente que no se trata de validar contra un XSD, mientras que esa pregunta se trata completamente de validar un XSD. –

Respuesta

36

Hay un comando de Linux llamado xmllint que es bueno para esto. Es muy rápido, maneja bocinazos de archivos geniales sin desprestigio, y brinda valiosos mensajes de validación de errores.

+2

cosas geniales. Incluso validación soportada ... ¿Cómo podría vivir sin ella? +1 – Boldewyn

+0

La opción --format también es muy útil – skaffman

2

Puede usar funciones de otros idiomas para eso. Por ejemplo, un dos-liner en Python:

import xml.dom.minidom as dom 
dom.parse ('test.xml') 

Esto mostrará el problema, y ​​es bastante performant. Recuerdo que había un juego de herramientas XML que funcionaba bastante bien desde dentro de bash, pero no puedo encontrar un enlace a eso ahora mismo.

Saludos,

Editar:This question's answer sugirió el uso de SAX sobre dom, ya que sería más performante. Una secuencia de comandos de Python lista para su uso sería entonces algo como esto:

Edición 2: Recuerdo una vez más, la herramienta fue XMLStarlet. Me pareció bastante agradable, cuando lo usé hace dos años.

+0

Yo también, pero para archivos XML muy grandes estarás contento por cada rendimiento que puedas extraer de la herramienta. – Boldewyn

2

Siempre recomiendo las utilidades de línea de comandos XML Starlet.

Ellos proporcionan la validación, la consulta, el formato, la edición de documentos directamente desde la línea de comandos, y son de gran valor para este tipo de trabajo o documentos de comprobación de cordura, cortando secciones a cabo a través de XPath etc.

+0

¡Jaja! Llegas muy tarde. Lo recordé justo a tiempo. ;-) – Boldewyn

+0

Obviamente causó una gran impresión en usted –

+0

Sí, hace tres años, cuando comencé con XML, era una molestia trabajar con él en la línea de comandos. Luego encontré XML Starlet y de repente se puso realmente genial trabajar con XML en mis scripts bash. – Boldewyn

10

El otra respuesta simplificada: [? herramienta de esquema XML (XSD) de validación]

python -c "import sys, xml.dom.minidom as d; d.parse(sys.argv[1])" FILE 
+0

¡Bonito comando de una línea! – Martlark

Cuestiones relacionadas