studio programacion móviles libros libro desarrollo desarrollar curso aprende aplicaciones java xml validation syntax

java - móviles - manual de programacion android pdf



Validación de sintaxis XML en Java (3)

Lo que está preguntando es cómo verificar que un contenido sea un documento XML bien formado. Esto se hace fácilmente simplemente dejando que un analizador XML (intente) analizar el contenido en cuestión; si hay problemas, el analizador informará un error arrojando una excepción. Realmente no hay nada más para eso; así que todo lo que necesita es descubrir cómo analizar un documento XML.

Lo único que hay que tener en cuenta es que algunas librerías que afirman ser analizadores XML no son realmente analizadores correctos, ya que es posible que no verifiquen las cosas que el analizador XML debe hacer (según la especificación XML): en Java, Javolution es un ejemplo de algo que hace poco o nada de comprobación; VTD-XML y XPP3 realizan algunas verificaciones (pero no todas las verificaciones requeridas). Y en el otro extremo del espectro, Xerces y Woodstox comprueban todo lo que exige la especificación. Xerces se incluye con JDK; y la mayoría de los marcos de servicios web incluyen también Woodstox.

Dado que la respuesta aceptada ya muestra cómo analizar el contenido en un documento DOM (que comienza con el análisis sintáctico), eso podría ser suficiente. La única advertencia es que esto requiere que tengas 3-5x de memoria disponible como tamaño sin formato del documento de entrada. Para evitar esta limitación, puede usar un analizador de transmisión en tiempo real, como Woodstox (que implementa Stax API estándar). Si es así, crearía un XMLStreamReader, y simplemente llamará a "reader.next ()" siempre que "reader.hasNext ()" devuelva verdadero.

He estado tratando de averiguar cómo verificar la sintaxis de un archivo XML, asegurarme de que todas las etiquetas estén cerradas, que no haya caracteres aleatorios, etc. Todo lo que me importa en este punto es asegurarme de que no haya ningún XML roto en el archivo.

He estado mirando algunas publicaciones de SO como estas ...

... pero me di cuenta de que no quiero validar la estructura del archivo XML; No quiero validar contra un Esquema XML (XSD) ... Solo quiero verificar la sintaxis XML y determinar si es correcta.


Puede verificar si un documento XML está bien formado usando el siguiente código:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); builder.setErrorHandler(new SimpleErrorHandler()); // the "parse" method also validates XML, will throw an exception if misformatted Document document = builder.parse(new InputSource("document.xml"));

La clase SimpleErrorHandler la que se hace referencia en el código anterior es la siguiente:

public class SimpleErrorHandler implements ErrorHandler { public void warning(SAXParseException e) throws SAXException { System.out.println(e.getMessage()); } public void error(SAXParseException e) throws SAXException { System.out.println(e.getMessage()); } public void fatalError(SAXParseException e) throws SAXException { System.out.println(e.getMessage()); } }

Esto vino de este sitio web , que proporciona varios métodos para validar XML con Java. Tenga en cuenta también que este método carga un árbol DOM completo en la memoria, consulte los comentarios de alternativas si desea guardar en la memoria RAM.