1. Comprender la tecnología de análisis XML
1.1. Conceptos relacionados con XML
(1) DTD: reglas de sintaxis XML, que son el mecanismo de verificación de los archivos XML. Puede comparar documentos XML con archivos DTD para ver si el documento cumple con las especificaciones y si los elementos y las etiquetas se usan correctamente.
(2) XML es la base de SOA.
1.2. Tecnología de procesamiento XML
(1) Para usar XML, necesitamos acceder a datos a través de un procesador XML o XMLAPI. Actualmente, JAXP proporciona dos métodos para procesar XML: DOM y SAX.
① DOM: DOM accede a datos y estructuras en documentos XML mediante programación, basada en la estructura del árbol de los documentos XML en la memoria. La desventaja es que requiere una gran cantidad de sobrecarga para cargar todo el documento XML en la memoria.
②Sax: basado en el evento, un segmento se usa para analizar un segmento, que resuelve el problema de que DOM tome mucha memoria, pero su desventaja es que no puede acceder a los documentos al azar.
(2) Para resolver los problemas de DOM y SAX, ha aparecido un StreamApiforXML basado en la corriente (Stax para abreviar). Se ha agregado a JAXP1.4 de JDK6, y Stax también está impulsado por eventos.
(3) DOM, SAX y STAX Todos los XML de procesos de la estructura del documento, pero muchas aplicaciones solo se centran en los datos del documento en sí, por lo que la tecnología de enlace de datos XML surgió.
Enlace de datos: se refiere al proceso de extraer datos de los medios de almacenamiento (documentos XML y bases de datos) y representar estos datos a través de programas, es decir, vincular los datos a una estructura de memoria que la máquina virtual puede comprender y operar.
Marco de enlace XML: Castor, Jaxb, JIBX, Quick, Zeus, etc.
2. Herramienta de procesamiento XML: Xstream
2.1. Descripción general de Xstream
(1) Xstream es un marco de código abierto simple y fácil de usar para serializar los objetos Java en XML, o deserializar XML en objetos Java. Características clave de Xstream:
(2) Composición de arquitectura XStream:
Convertidores: cuando Xstream encuentra un objeto que necesita convertirse, se delega a la implementación del convertidor apropiado.
IO (entrada/salida): XStream se abstrae de los datos XML subyacentes a través de jerárquico streamwriter y jerárquicostreamreader, y se utiliza para operaciones de serialización y deserialización, respectivamente.
Contexto: cuando XStream serializa los objetos de deserialización, se crean dos clases MarshallingContext y UnmarshallingContext, y la puerta de la torre procesa los datos y los delega al convertidor apropiado.
Fachada (entrada unificada): Integre los 3 puntos anteriores juntos y ábralos a los usuarios con una interfaz unificada.
2.2. Comienzo rápido
(1) Cree un XStream y especifique un analizador XML
XstreamXStream = newxStream (newDomDriver ());
Si no especifica un analizador, Xstream usará el analizador XPP (XMLPullParser) de forma predeterminada, que es un analizador de alta velocidad.
(2) Los ejemplos son los siguientes:
2.3. Usar alias xstream
(1) En el ejemplo anterior, el nombre de clase completa del objeto Java corresponde al elemento raíz del archivo XML, y el nombre del atributo corresponde al elemento nodo del archivo XML. Sin embargo, en situaciones reales, tanto el objeto Java como el objeto XML ya pueden haber definido nombres, por lo que se necesita mapeo de alias.
Xstream tiene 3 configuraciones de alias:
Nombre de la categoría: Use alias (StringName, Classtype).
Alias de miembro de la clase: Use aliasfield (stringalias, classdefinedIn, stringfieldName).
Los miembros de la clase se usan como alias de atributo: use aliasattribute (classdefinedIn, stringAtTributEname, stringalias), y nombrarlos solo no tiene significado, y también deben aplicarse a una determinada clase a través de USEATTRIBUDEFOR (classDefinedIn, StringFieldName).
(2) Modifique el ejemplo en 2.2 a través del alias:
2.4. Convertidor xstream
Durante el proceso de desarrollo, a veces necesita convertir algunos tipos personalizados. Simplemente implemente la interfaz del convertidor y llame al método RegisterConverter () de XStream para registrar el convertidor.
2.5. Anotación xstream
(1) Las anotaciones comunes para Xstream son las siguientes:
(2) Use
XstreamXStream = newxStream (newDomDriver ());
Hay 2 formas de cargar objetos:
① Método 1:
xstream.processannotations (aaa.class);
xstream.processannotations (bbb.class);
② Método 2:
xstream.autodetectannotations (verdadero); // Cargue automáticamente el frijol anotado y también almacena el objeto anotado.
2.6. Objetos que fluyen
(1) XStream proporciona implementaciones alternativas para ObjectInputStream y ObjectOutputStream, lo que permite operaciones de serialización o deserialización de XML en forma de secuencias de objetos. El anterior es XML leído por el analizador XML basado en DOM, aquí obviamente debemos usar el método de transmisión para analizar.
Los ejemplos son los siguientes:
(2) La diferencia entre el uso de PrettyWriter y CompactWriter es que PrettyWriter formateará el XML generado, mientras que CompactWriter comprimirá el XML generado.
2.7. API de persistencia
(1) Xstream proporciona una forma simple de persistir objetos en la colección en archivos, como: XMLarrayList, XMLSet, XMLMAP, etc.
(2) Antes de crear una colección, también debe especificar una estrategia de persistencia persistencestrategy.
2.8. Manejar json
(1) XML tiene una posición inquebrantable en el servicio web, pero en la mayoría de las aplicaciones web, el JSON ligero todavía se usa como formato de intercambio de datos.
(2) XStream proporciona JettisonMappedxMlDriver y JSONHERHERARCHICALSTREAMDRIVER para completar la conversión de objetos Java y JSON.
Los ejemplos son los siguientes:
(3) La diferencia entre JettisonMappedxMlDriver y JSONHERHERARCHICALSTREAMDRIVER:
①jettisonMappedxMlDriver genera JSON comprimido, mientras que JSONHERARCHICALSTREAMDRIVER genera JSON formateado.
② Si desea convertir JSON en un objeto, solo puede usar JettisonMappedxMlDriver.
3. Otros proyectos comunes de código abierto O/XMapping
Comparación de Jaxb, XMLBeans, CStor, JIBX:
4. Integración con Springoxm
4.1. Descripción general de Springoxm
(1) SpringOXM ha realizado una abstracción unificada y encapsulación del marco de mapeo O/X de los principales. Marshaller y Unmarshaller son las dos interfaces centrales de Sprioxm. Marshaller se usa para convertir objetos en XML, y UNMARSHALLER se usa para convertir XML en objetos.
(2) Los envoltorios de componentes O/XMapping son los siguientes:
4.2. Configurar en primavera
(1) Instancia de configuración de XstreamMarShaller:
5. Resumen
(1) El enlace de datos XML de las aplicaciones Java se puede resumir en 2 maneras:
Genere el código de idioma Java (como Jaxb, XMLBeans, Castor) basado en documentos XML.
Use alguna forma de método de enlace de mapeo, es decir, establezca cómo las clases Java están asociadas con XML (como Xstream, Castor, JIBX).
(2) Comparación de 2 maneras:
Utilizando una estructura de documento estable definida por esquema o DTD, y la estructura es adecuada para las necesidades de la aplicación, un método de generación de código puede ser la mejor opción.
Si usa una clase Java existente, o si desea usar una estructura de una clase que refleje el uso de datos de la aplicación, en lugar de una estructura XML, el método de mapeo es la mejor opción.
Resumir
Lo anterior se trata de la primavera usando OXM para el análisis de mapeo XML de objetos. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!