java - trabajar - Cómo actualizar un archivo XML grande
leer string xml java (5)
En lugar de reescribir todo el contenido de un archivo xml cuando se actualiza un solo elemento, ¿existe una mejor alternativa para actualizar el archivo?
Aquí tiene algunas opciones, pero ninguna de ellas es buena.
Como los Objetos XML no están divididos en partes distintas, deberá usar alguna modificación del nivel del sistema de archivos con la coincidencia de patrones de expresiones regex (sed es un buen comienzo) O BIEN debe dividir su xml en partes más pequeñas para que sea más manejable.
Si es posible, serialice el XML y use diff / patch / apply Linux tools (o herramientas equivalentes en su plataforma). De esta manera, no tienes que lidiar con el análisis sintáctico, la escritura.
Si su archivo XML es tan grande que la actualización es un cuello de botella de rendimiento, debe considerar alejarse de XML a un formato de disco más eficiente (o una base de datos real).
Sin embargo, si sientes que podría ser un problema, recuerda las reglas de optimización:
- No lo hagas
- (solo expertos) No lo hagas aún.
Yo recomendaría usar VTD-XML http://vtd-xml.sourceforge.net/
De sus preguntas frecuentes ( http://vtd-xml.sourceforge.net/faq.html ):
¿Por qué debería usar VTD-XML para archivos XML grandes?
Por numerosos motivos que se resumen a continuación:
- Rendimiento: el rendimiento de VTD-XML es mucho mejor que SAX
- Facilidad de uso: el acceso aleatorio combinado con XPath hace que la aplicación sea fácil de escribir
- Mejor mantenimiento: el código de la aplicación es más corto y más simple de entender.
- Actualización incremental: ocasionalmente, pequeños cambios se vuelven muy eficientes.
- Indexación: la forma preescaneada de XML aumentará aún más el rendimiento del procesamiento.
- Otras características: Cortar, pegar, dividir y ensamblar documentos XML solo es posible con VTD-XML.
Para aprovechar VTD-XML, recomendamos que los desarrolladores dividan sus documentos XML ultra grandes en mandriles más pequeños y manejables (<2GB).
Procesar archivos XML grandes con XQuery funciona con archivos XML de tamaño Gigabyte http://www.xquery.com
XQuery es un lenguaje de consulta que se diseñó como un lenguaje de consulta XML nativo. Debido a que la mayoría de los tipos de datos se pueden representar como XML, XQuery también se puede usar para consultar otros tipos de datos. Por ejemplo, XQuery se puede usar para consultar datos relacionales utilizando una vista XML de una base de datos relacional. Esto es importante porque muchas aplicaciones de Internet necesitan integrar información de múltiples fuentes, incluidos los datos que se encuentran en los mensajes web, datos relacionales y varias fuentes XML. XQuery fue diseñado específicamente para este tipo de integración de datos.
Por ejemplo, supongamos que su empresa es una institución financiera que necesita generar informes de existencias para cada cliente. Un cliente solicita un informe con un mensaje de Protocolo simple de acceso a objetos (SOAP), que se representa en XML. En la mayoría de las empresas, los datos de existencias de acciones se almacenan en múltiples bases de datos relacionales, como Oracle, Microsoft SQL Server o DB2. XQuery puede consultar tanto el mensaje SOAP como las bases de datos relacionales, creando un informe en XML.
XQuery se basa en la estructura de XML y aprovecha esa estructura para posibilitar la realización de consultas sobre cualquier tipo de datos que puedan representarse como XML, incluidos los datos relacionales. Además, XQuery API para Java (XQJ) permite que sus consultas se ejecuten en cualquier entorno compatible con la plataforma J2EE.