DOM es una poderosa herramienta de análisis adecuada para documentos pequeños
¿Por qué dices eso? Porque cargará todo el documento xml en la memoria para formar un árbol de objetos de documento.
En general, suena aterrador, pero usarlo para leer cosas pequeñas es bastante conveniente en comparación con Sax.
En cuanto a sus operaciones de adición y eliminación, etc., no planeo escribirlo. Cuando estaba viendo el tutorial, casi vomité por el código feo.
Es precisamente por esto que posteriormente existieron herramientas como jdom y dom4j...
No hay mucho que decir, solo ve al código.
Ejemplo de análisis de Dom
importar javax.xml.parsers.DocumentBuilder;
importar javax.xml.parsers.DocumentBuilderFactory;
importar org.w3c.dom.Document;
importar org.w3c.dom.Element;
importar org.w3c.dom.NamedNodeMap;
importar org.w3c.dom.Node;
importar org.w3c.dom.NodeList;
Demostración de clase pública {
public static void main (String [] args) lanza una excepción {
// Crea una instancia de fábrica de analizadores y genera un analizador
DocumentBuilderFactory fábrica = DocumentBuilderFactory.newInstance();
Constructor de DocumentBuilder = factory.newDocumentBuilder();
//Crea el objeto de documento que necesita ser analizado
Archivo f = nuevo Archivo("libros.xml");
// Analiza el documento y devuelve un objeto Documento. En este momento, el documento xml se ha cargado en la memoria.
// Bien, hagamos el análisis más intenso y el resto es obtener los datos.
Documento doc = builder.parse(f);
//Obtener el elemento raíz del documento
// ¿Me preguntas por qué hago esto? Porque el objeto del documento en sí es una estructura de árbol y esta es la raíz del árbol.
//Por supuesto, también puedes buscar la colección de elementos directamente y omitir este paso
Raíz del elemento = doc.getDocumentElement();
// El nodo raíz se encontró arriba y aquí comenzamos a obtener la colección de elementos debajo del nodo raíz.
Lista NodeList = root.getElementsByTagName("libro");
para (int i = 0; i < list.getLength(); i++) {
//Encuentra el nodo en la colección mediante el método item() y lo convierte en un objeto Element
Elemento n = (Elemento) lista.item(i);
//Obtiene el mapa de atributos en el objeto, usa un bucle for para extraer e imprimir
Nodo NamedNodeMap = n.getAttributes();
para (int x = 0; x < nodo.getLength(); x++) {
Nodo nn = nodo.item(x);
System.out.println(nn.getNodeName() + ": " + nn.getNodeValue());
}
// Imprime el contenido del elemento, el código es muy complicado, casi un formato fijo
System.out.println("título: " +n.getElementsByTagName("título").item(0).getFirstChild().getNodeValue());
System.out.println("autor: " + n.getElementsByTagName("autor").item(0).getFirstChild().getNodeValue());
System.out.println();
}
}
}
Resultado de salida: