validate example against java xml validation xsd

java - example - Validar un archivo XML ENORME



validate xml against xsd (4)

Estoy tratando de encontrar una forma de validar un archivo XML grande contra un XSD. Vi la pregunta ... la mejor forma de validar un XML ... pero todas las respuestas apuntaban al uso de la biblioteca Xerces para la validación. El único problema es que cuando uso esa biblioteca para validar un archivo de 180 MB, obtengo una OutOfMemoryException.

¿Hay otras herramientas, bibliotecas, estrategias para validar un archivo XML más grande de lo normal?

EDITAR: la solución SAX funcionó para la validación de Java, pero las otras dos sugerencias para la herramienta libxml también fueron muy útiles para la validación fuera de Java.


En lugar de usar un DOMParser, use un SAXParser. Esto se lee desde una secuencia de entrada o lector para que pueda mantener el XML en el disco en lugar de cargarlo todo en la memoria.

SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); factory.setNamespaceAware(true); SAXParser parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); reader.setErrorHandler(new SimpleErrorHandler()); reader.parse(new InputSource(new FileReader ("document.xml")));


Personalmente, me gusta usar XMLStarlet que tiene una interfaz de línea de comando y funciona en las transmisiones. Es un conjunto de herramientas creadas en Libxml2.


SAX y libXML ayudarán, como ya se mencionó. También podría intentar aumentar el tamaño máximo de almacenamiento dinámico para la JVM utilizando la opción -Xmx. Por ejemplo, para establecer el tamaño de java -Xmx512m com.foo.MyClass máximo en 512 MB: java -Xmx512m com.foo.MyClass


Utilice libxml , que realiza la validación y tiene un modo de transmisión.