XML: procesar datos grandes

¿Qué analizador XML recomienda para el siguiente propósito?

El archivo XML (formateado, que contiene espacios en blanco) tiene alrededor de 800 MB. Principalmente contiene tres tipos de etiquetas (llamémoslas n, w y r). Tienen un atributo llamado id que tendría que buscar lo más rápido posible.

Eliminar los atributos que no necesito podría ahorrar alrededor del 30%, tal vez un poco más.

Primera parte para optimizar la segunda parte: ¿Hay alguna buena herramienta (línea de comandos de Linux y Windows si es posible) parafácilmente eliminar atributos no utilizados en ciertas etiquetas? Sé que XSLT podría usarse. ¿O hay alguna alternativa fácil? Además, podría dividirlo en tres archivos, uno para cada etiqueta para ganar velocidad para su posterior análisis ... La velocidad no es demasiado importante para esta preparación de los datos, por supuesto, sería bueno cuando tomara más de minutos que horas.

Segunda parte: Una vez que tenga los datos preparados, ya sea acortados o no, debería poder buscar el atributo de ID que estaba mencionando, esto es crítico en el tiempo.

Estimaciones usandowc -l dime que hay alrededor de 3M N-tags y alrededor de 418K W-tags. Los últimos pueden contener hasta aproximadamente 20 subetiquetas cada uno. Las etiquetas W también contienen algunas, pero se eliminarían.

"Todo lo que tengo que hacer" es navegar entre etiquetas que contienen ciertos atributos de identificación. Algunas etiquetas tienen referencias a otras identificaciones, por lo tanto, me dan un árbol, tal vez incluso un gráfico. Los datos originales son grandes (como se mencionó), pero el conjunto de resultados no debería ser demasiado grande, ya que solo tengo que seleccionar ciertos elementos.

Ahora la pregunta: ¿Qué biblioteca de análisis XML debo usar para este tipo de procesamiento? Usaría Java 6 en primera instancia, teniendo en cuenta portarlo a BlackBerry.

¿Podría ser útil simplemente crear un archivo plano que indexe la identificación y apunte a un desplazamiento en el archivo? ¿Es necesario hacer las optimizaciones mencionadas en la parte superior? ¿O se sabe que el analizador es tan rápido con los datos originales?

Pequeña nota: para probar, tomé la identificación que estaba en la última línea del archivo y busqué la identificación usando grep. Esto tomó alrededor de un minuto en un Core 2 Duo.

¿Qué sucede si el archivo crece aún más, digamos 5 GB?

Agradezco cualquier aviso o recomendación. Muchas gracias a todos de antemano y saludos

Respuestas a la pregunta(6)

Su respuesta a la pregunta