read parseo parse node leer java xml parsing

parseo - Mejor analizador de XML para Java



parseo de xml en java (8)

Además de SAX y DOM, está disponible el análisis de STaX utilizando XMLStreamReader, que es un analizador xml pull.

Necesito leer archivos XML pequeños (algunos MB a lo sumo, codificados en UTF-8), hurgar en torno a varios elementos y atributos, quizás modificar algunos y escribir el XML de nuevo en el disco (preferiblemente con un formato agradable y con sangría) .

¿Cuál sería el mejor analizador XML para mis necesidades? Hay muchos para elegir. Algunos de los que soy consciente son:

Y, por supuesto, la del JDK (estoy usando Java 6). Estoy familiarizado con Xerces pero lo encuentro torpe.

Recomendaciones?



Creo que no deberías considerar ninguna implementación específica del analizador. La API de Java para el procesamiento XML le permite utilizar cualquier implementación de analizador conforme de una manera estándar. El código debería ser mucho más portátil, y cuando te das cuenta de que un analizador específico se ha vuelto demasiado viejo, puedes reemplazarlo por otro sin cambiar una línea de tu código (si lo haces correctamente).

Básicamente, hay tres formas de manejar XML de una manera estándar:

  • SAX Esta es la API más simple. Usted lee el XML definiendo una clase de manejador que recibe los datos dentro de los elementos / atributos cuando el XML se procesa de manera serial. Es más rápido y sencillo si solo planea leer algunos atributos / elementos y / o escribir algunos valores (su caso).
  • DOM Este método crea un árbol de objetos que le permite modificarlo / acceder a él de forma aleatoria, por lo que es mejor para la manipulación y el manejo complejos de XML.
  • StAX Esto está en el medio de la ruta entre SAX y DOM. Simplemente escriba el código para extraer los datos del analizador en el que está interesado cuando se procesa.

Olvídese de las API propietarias, como las de JDOM o Apache (es decir, Apache Xerces XMLSerializer ), ya que lo vinculará a una implementación específica que puede evolucionar en el tiempo o perder la compatibilidad hacia atrás, lo que le hará cambiar su código en el futuro cuando desee actualizar a una nueva versión de JDOM o cualquier analizador que uses. Si se adhiere a la API estándar de Java (utilizando fábricas e interfaces), su código será mucho más modular y fácil de mantener.

No es necesario decir que todos los analizadores propuestos (no los he comprobado todos, pero estoy casi seguro) cumplen con una implementación de JAXP, por lo que técnicamente se pueden usar todos, sin importar cuál sea.


He encontrado que dom4j es la herramienta para trabajar con XML. Especialmente en comparación con Xerces.


No recomendaría esto, ya que tienes mucho "pensamiento" en tu aplicación, pero el uso de XSLT podría ser mejor (y potencialmente más rápido con la compilación de XSLT a bytecode) que la manipulación de Java.


Si le importa menos el rendimiento, soy un gran fanático de Apache Digester, ya que esencialmente le permite mapear directamente desde XML a Java Beans.

De lo contrario, primero debe analizar y luego construir sus objetos.



Si la velocidad y la memoria no son un problema, dom4j es una muy buena opción. Si necesita velocidad, usar un analizador StAX como Woodstox es la forma correcta, pero tiene que escribir más código para hacer las cosas y debe acostumbrarse a procesar XML en secuencias.