XML son las siglas de Extensible Markup Language.
Las siguientes son las ventajas que ofrece XML:
Technology agnostic- Al ser texto sin formato, XML es una tecnología independiente. Puede ser utilizado por cualquier tecnología para el almacenamiento y transmisión de datos.
Human readable- XML utiliza un formato de texto simple. Es legible y comprensible para humanos.
Extensible - en XML, las etiquetas personalizadas se pueden crear y utilizar muy fácilmente.
Allow Validation - El uso de XSD, DTD y estructura XML se puede validar fácilmente.
Las siguientes son las desventajas del uso de XML:
Redundant Syntax - Normalmente, el archivo XML contiene muchos términos repetitivos.
Verbose-Al ser un lenguaje detallado, el tamaño del archivo XML aumenta los costos de transmisión y almacenamiento.
Analizar XML se refiere a pasar por un documento XML para acceder a los datos o modificarlos de una forma u otra.
XML Parser proporciona una forma de acceder o modificar los datos presentes en un documento XML. Java proporciona múltiples opciones para analizar documentos XML.
A continuación se muestran varios tipos de analizadores que se utilizan comúnmente para analizar documentos XML:
Dom Parser - Analiza el documento cargando el contenido completo del documento y creando su árbol jerárquico completo en la memoria.
SAX Parser- Analiza el documento en activadores basados en eventos. No carga el documento completo en la memoria.
JDOM Parser - Analiza el documento de manera similar al analizador DOM pero de una manera más fácil.
StAX Parser - Analiza el documento de manera similar al analizador SAX pero de una manera más eficiente.
XPath Parser - Analiza el XML basado en la expresión y se usa ampliamente junto con XSLT.
DOM4J Parser - Una biblioteca de Java para analizar XML, XPath y XSLT utilizando Java Collections Framework, proporciona soporte para DOM, SAX y JAXP.
DOM son las siglas de Document Object Model.
DOM significa Document Object Model y es una recomendación oficial del World Wide Web Consortium (W3C). Define una interfaz que permite a los programas acceder y actualizar el estilo, la estructura y el contenido de los documentos XML. Los analizadores XML que admiten DOM implementan esa interfaz.
Debería usar un analizador DOM cuando:
Necesitas saber mucho sobre la estructura de un documento.
Necesita mover partes del documento (es posible que desee ordenar ciertos elementos, por ejemplo)
Necesita usar la información en el documento más de una vez
Cuando analiza un documento XML con un analizador DOM, obtiene una estructura de árbol que contiene todos los elementos de su documento. El DOM proporciona una variedad de funciones que puede utilizar para examinar el contenido y la estructura del documento.
El DOM es una interfaz común para manipular estructuras de documentos. Uno de sus objetivos de diseño es que el código Java escrito para un analizador compatible con DOM debe ejecutarse en cualquier otro analizador compatible con DOM sin cambios.
El DOM define varias interfaces Java. Estas son las interfaces más comunes:
Node - El tipo de datos base del DOM.
Element - La gran mayoría de los objetos con los que lidiarás son Elementos.
Attr Representa un atributo de un elemento.
Text El contenido real de un elemento o atributo.
DocumentRepresenta el documento XML completo. Un objeto de documento a menudo se denomina árbol DOM.
Cuando trabaje con DOM, hay varios métodos que utilizará con frecuencia:
Document.getDocumentElement() - Devuelve el elemento raíz del documento.
Node.getFirstChild() - Devuelve el primer hijo de un nodo determinado.
Node.getLastChild() - Devuelve el último hijo de un nodo determinado.
Node.getNextSibling() - Estos métodos devuelven el siguiente hermano de un nodo determinado.
Node.getPreviousSibling() - Estos métodos devuelven el hermano anterior de un nodo determinado.
Node.getAttribute(attrName) - Para un nodo dado, devuelve el atributo con el nombre solicitado.
¡Si! Usando el analizador DOM, podemos analizar, modificar o crear un documento XML.
SAX son las siglas de Simple API for XML.
SAX Parser es un analizador basado en eventos para documentos xml.
SAX (la API simple para XML) es un analizador basado en eventos para documentos xml. A diferencia de un analizador DOM, un analizador SAX no crea un árbol de análisis. SAX es una interfaz de flujo continuo para XML, lo que significa que las aplicaciones que utilizan SAX reciben notificaciones de eventos sobre el documento XML que se procesa como elemento y atributo a la vez en orden secuencial comenzando en la parte superior del documento y terminando con el cierre del documento. Elemento ROOT.
Debería utilizar un analizador SAX cuando:
Puede procesar el documento XML de forma lineal de arriba hacia abajo
El documento no está profundamente anidado
Está procesando un documento XML muy grande cuyo árbol DOM consumiría demasiada memoria.Las implementaciones DOM típicas usan diez bytes de memoria para representar un byte de XML
El problema a resolver involucra solo una parte del documento XML
Los datos están disponibles tan pronto como los ve el analizador, por lo que SAX funciona bien para un documento XML que llega a través de una secuencia.
No tenemos acceso aleatorio a un documento XML ya que se procesa solo de manera reenviada
Si necesita realizar un seguimiento de los datos que el analizador ha visto o cambiar el orden de los elementos, debe escribir el código y almacenar los datos por su cuenta
ContentHandler Interface especifica los métodos de devolución de llamada que utiliza el analizador SAX para notificar a un programa de aplicación de los componentes del documento XML que ha visto.
void startDocument() - Llamado al comienzo de un documento.
void endDocument() - Llamado al final de un documento.
void startElement(String uri, String localName, String qName, Attributes atts) - Llamado al comienzo de un elemento.
void endElement(String uri, String localName,String qName) - Llamado al final de un elemento.
void characters(char[] ch, int start, int length) - Llamado cuando se encuentran datos de caracteres.
void ignorableWhitespace( char[] ch, int start, int length) - Se llama cuando hay un DTD presente y se encuentran espacios en blanco ignorables.
void processingInstruction(String target, String data) - Se llama cuando se reconoce una instrucción de procesamiento.
void setDocumentLocator(Locator locator)) - Proporciona un localizador que se puede utilizar para identificar posiciones en el documento.
void skippedEntity(String name) - Se llama cuando se encuentra una entidad sin resolver.
void startPrefixMapping(String prefix, String uri) - Se llama cuando se define una nueva asignación de espacio de nombres.
void endPrefixMapping(String prefix) - Se llama cuando una definición de espacio de nombres finaliza su alcance.
La interfaz de atributos especifica métodos para procesar los atributos conectados a un elemento.
int getLength() - Devuelve el número de atributos.
String getQName(int index)
String getValue(int index)
String getValue(String qname)
¡No! Usando el analizador SAX, solo podemos analizar o modificar un documento XML.
JDOM es una biblioteca de código abierto basada en Java para analizar documentos XML y normalmente es una API amigable para desarrolladores de Java.
Está optimizado para Java, utiliza una colección de Java como List y Arrays. Funciona con DOM y SAX API y combina lo mejor de los dos. Ocupa poco espacio en la memoria y es casi tan rápido como SAX.
Debería utilizar un analizador JDOM cuando:
Necesita saber mucho sobre la estructura de un documento.
Necesita mover partes del documento (es posible que desee ordenar ciertos elementos, por ejemplo).
Debe utilizar la información del documento más de una vez.
Usted es un desarrollador de Java y desea aprovechar el análisis de XML optimizado para Java.
Cuando analiza un documento XML con un analizador JDOM, obtiene la flexibilidad de recuperar una estructura de árbol que contiene todos los elementos de su documento sin afectar la huella de memoria de la aplicación. El JDOM proporciona una variedad de funciones de utilidad que puede utilizar para examinar el contenido y la estructura del documento en caso de que el documento esté bien estructurado y se conozca su estructura.
JDOM brinda a los desarrolladores de Java flexibilidad y facilidad de mantenimiento del código de análisis xml. Es ligero y rápido API.
El JDOM define varias clases de Java. Aquí están las clases más comunes:
Document- Representa todo el documento XML. Un objeto de documento a menudo se denomina árbol DOM.
Element- Representa un elemento XML. El objeto Element tiene métodos para manipular sus elementos secundarios, su texto, atributos y espacios de nombres.
AttributeRepresenta un atributo de un elemento. El atributo tiene un método para obtener y establecer el valor del atributo. Tiene tipo de atributo y padre.
Text Representa el texto de la etiqueta XML.
Comment Representa los comentarios en un documento XML.
Cuando trabaja con JDOM, hay varios métodos que utilizará con frecuencia:
SAXBuilder.build(xmlSource) - Cree el documento JDOM a partir de la fuente xml.
Document.getRootElement() - Obtener el elemento raíz del XML.
Element.getName() - Obtenga el nombre del nodo XML.
Element.getChildren() - Obtener todos los nodos secundarios directos de un elemento.
Node.getChildren(Name) - Obtenga todos los nodos secundarios directos con un nombre de pila.
Node.getChild(Name) - Obtenga el primer nodo hijo con nombre de pila.
¡Si! Usando el analizador JDOM, podemos analizar, modificar y crear un documento XML.
StAX es una API basada en JAVA para analizar documentos XML de una manera similar a como lo hace el analizador SAX, pero StAX es una API PULL mientras que SAX es una API PUSH. Significa que en el caso del analizador StAX, la aplicación cliente debe pedirle al analizador StAX que obtenga información de XML siempre que lo necesite, pero en el caso del analizador SAX, se requiere que la aplicación cliente obtenga información cuando el analizador SAX notifica a la aplicación cliente que la información está disponible.
¡Si! Usando el analizador StAX, podemos analizar, modificar y crear un documento XML.
¡Si! StAX es una API PULL.
Debería utilizar un analizador StAX cuando:
Puede procesar el documento XML de forma lineal de arriba hacia abajo.
El documento no está profundamente anidado.
Está procesando un documento XML muy grande cuyo árbol DOM consumiría demasiada memoria. Las implementaciones DOM típicas usan diez bytes de memoria para representar un byte de XML.
El problema a resolver involucra solo una parte del documento XML.
Los datos están disponibles tan pronto como los ve el analizador, por lo que StAX funciona bien para un documento XML que llega a través de una secuencia.
No tenemos acceso aleatorio a un documento XML ya que se procesa solo de manera reenviada
Si necesita realizar un seguimiento de los datos que el analizador ha visto o cambiar el orden de los elementos, debe escribir el código y almacenar los datos por su cuenta
Esta clase proporciona un iterador de eventos que se puede usar para iterar sobre los eventos a medida que ocurren mientras se analiza el documento XML.
StartElement asStartElement() - utilizado para recuperar valor y atributos del elemento.
EndElement asEndElement() - llamado al final de un elemento.
Characters asCharacters() - se puede utilizar para obtener caracteres como CDATA, espacios en blanco, etc.
Esta interfaz especifica métodos para crear un evento.
add(Event event) - Agregar eventos que contienen elementos a XML.
Esta clase proporciona un iterador de eventos que se puede usar para iterar sobre los eventos a medida que ocurren mientras se analiza el documento XML.
int next() - utilizado para recuperar el próximo evento.
boolean hasNext() - utilizado para comprobar que existen más eventos o no
String getText() - usado para obtener el texto de un elemento
String getLocalName() - usado para obtener el nombre de un elemento
Esta interfaz especifica métodos para crear un evento.
writeStartElement(String localName) - Agregar elemento inicial del nombre de pila.
writeEndElement(String localName) - Agregar elemento final del nombre de pila.
writeAttribute(String localName, String value) - Escribir atributo en un elemento.
XPath es una recomendación oficial del World Wide Web Consortium (W3C). Define un lenguaje para buscar información en un archivo XML. Se utiliza para recorrer elementos y atributos de un documento XML. XPath proporciona varios tipos de expresiones que se pueden utilizar para consultar información relevante del documento XML.
Los siguientes son los componentes clave de XPath:
Structure Definitions - XPath define las partes de un documento XML como elemento, atributo, texto, espacio de nombres, instrucción de procesamiento, comentario y nodos de documento.
Path Expressions XPath proporciona potentes expresiones de ruta para seleccionar nodos o listas de nodos en documentos XML.
Standard FunctionsXPath proporciona una amplia biblioteca de funciones estándar para la manipulación de valores de cadena, valores numéricos, comparación de fecha y hora, manipulación de nodos y QName, manipulación de secuencias, valores booleanos, etc.
Major part of XSLTXPath es uno de los elementos principales del estándar XSLT y debe tener conocimientos para trabajar con documentos XSLT.
W3C recommendationXPath es una recomendación oficial del World Wide Web Consortium (W3C).
Los predicados se utilizan para encontrar un nodo específico o un nodo que contiene un valor específico y se definen mediante [...].
Expresión | Resultado |
---|---|
/ clase / estudiante [1] | Selecciona el primer elemento de estudiante que es hijo del elemento de clase. |
/ clase / alumno [último ()] | Selecciona el último elemento de estudiante que es hijo del elemento de clase. |
/ clase / alumno [último () - 1] | Selecciona el último elemento de estudiante, excepto uno, que es hijo del elemento de clase. |
// estudiante [@ rollno = '493'] | Selecciona todos los elementos del alumno que tienen un atributo llamado rollno con un valor de '493' |
XPath usa una expresión de ruta para seleccionar un nodo o una lista de nodos de un documento xml. A continuación se muestra la lista de rutas y expresiones útiles para seleccionar cualquier nodo / lista de nodos de un documento xml.
Expresión | Descripción |
---|---|
nombre del nodo | Seleccione todos los nodos con el nombre de pila "nombre de nodo" |
/ | La selección comienza desde el nodo raíz |
// | La selección comienza desde el nodo actual que coincide con la selección |
. | Selecciona el nodo actual |
.. | Selecciona el padre del nodo actual |
@ | Selecciona atributos |
estudiante | Ejemplo: selecciona todos los nodos con el nombre "estudiante" |
clase / estudiante | Ejemplo: selecciona todos los elementos de los estudiantes que son hijos de la clase |
//estudiante | Selecciona todos los elementos del alumno sin importar dónde se encuentren en el documento |
¡No! El analizador XPath se utiliza para navegar solo por documentos XML. Es mejor utilizar el analizador DOM para crear XML.
DOM4J es una biblioteca de código abierto basada en Java para analizar documentos XML y es una API altamente flexible, de alto rendimiento y de memoria eficiente. Está optimizado para Java, utiliza una colección de Java como List y Arrays. Funciona con DOM, SAX, XPath y XSLT. Puede analizar documentos XML grandes con una huella de memoria muy baja.
Debería usar un analizador DOM4J cuando:
Necesitas saber mucho sobre la estructura de un documento.
Necesita mover partes del documento (es posible que desee ordenar ciertos elementos, por ejemplo)
Necesita usar la información en el documento más de una vez
Usted es un desarrollador de Java y desea aprovechar el análisis de XML optimizado para Java.
Cuando analiza un documento XML con un analizador DOM4J, obtiene la flexibilidad de recuperar una estructura de árbol que contiene todos los elementos de su documento sin afectar la huella de memoria de la aplicación. El DOM4J proporciona una variedad de funciones de utilidad que puede utilizar para examinar el contenido y la estructura del documento en caso de que el documento esté bien estructurado y se conozca su estructura. DOM4J utiliza la expresión XPath para navegar por el documento XML.
DOM4J ofrece a los desarrolladores de Java flexibilidad y facilidad de mantenimiento del código de análisis xml. Es ligero y rápido API.
El DOM4J define varias clases de Java. Aquí están las clases más comunes:
Document- Representa todo el documento XML. Un objeto de documento a menudo se denomina árbol DOM.
Element- Representa un elemento XML. El objeto Element tiene métodos para manipular sus elementos secundarios, su texto, atributos y espacios de nombres.
AttributeRepresenta un atributo de un elemento. El atributo tiene un método para obtener y establecer el valor del atributo. Tiene tipo de atributo y padre.
Node Representa elemento, atributo o instrucción de procesamiento
Cuando trabaje con DOM4J, hay varios métodos que utilizará con frecuencia:
SAXReader.read(xmlSource)() - Construya el documento DOM4J a partir de la fuente xml.
Document.getRootElement() - Obtener el elemento raíz del XML.
Element.node(index) - Obtenga el nodo XML en un índice particular en el elemento.
Element.attributes() - Obtener todos los atributos de un elemento.
Node.valueOf(@Name) - Obtener el valor de un atributo con el nombre del elemento.
¡Si! Usando el analizador DOM4J, podemos analizar, modificar y crear un documento XML.