A continuación se muestra una prueba de lectura XML que escribí yo mismo.
Copie el código de código de la siguiente manera:
importar java.util.Iterator;
importar java.io.BufferedReader;
importar java.io.File;
importar java.io.IOException;
importar java.io.InputStreamReader;
importar java.net.MalformedURLException;
importar org.dom4j.*;
importar org.dom4j.io.SAXReader;
clase pública XmlRead {
StringBuilder estático sBuilder = nuevo StringBuilder();
public static void main (String[] args) lanza IOException {
BufferedReader bReader = nuevo BufferedReader(nuevo InputStreamReader(
Sistema.en));
Ruta de cadena = nula;
System.out.println("Ingrese la ruta absoluta y el nombre del archivo XML:/n");
ruta = bReader.readLine();
sBuilder.append("Comenzar a generar contenido del archivo XML/n");
Documento documento = nulo;
intentar {
documento = leer(ruta);
sBuilder.append(ruta + "/n");
} captura (MalformedURLException e) {
e.printStackTrace();
} captura (DocumentException e) {
e.printStackTrace();
}
Raíz del elemento = getRootElement(documento);
si (raíz == nulo) {
System.out.print("No se obtuvo el nodo raíz");
devolver;
}
// Obtener el formato de codificación del documento XML
Cadena encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" codificación=/"" + encString
+ "/">/n");
sBuilder.append(elementText(raíz, attText(raíz), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* Nodo recursivo
*
* @descripción
* elemento @param
* @param nivel
* Nivel
* @devolver
*/
cadena estática privada getIterator (elemento elemento, int lvl) {
nivel += 1;
para (Iterador i = elemento.elementIterator(); i.hasNext();) {
Elemento e = (Elemento) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, nivel);
int recuento = e.nodeCount();
si (cuenta > 0) {
para (int j = 0; j < nivel; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
devolver sBuilder.toString();
}
/**
* Obtener el valor de cadena del atributo del nodo actual
*
* @descripción
* elemento @param
* Nodo actual
* @devolver
*/
cadena estática privada attText (elemento elemento) {
Cadena cadena = " ";
para (int i = 0; i < elemento.attributeCount(); i++) {
Atributo atributo = elemento.atributo(i);
str += atributo.getName() + "=/"" + atributo.getValue() + "/" ";
}
devolver cadena;
}
/**
* Obtener el valor de texto del Elemento actual
*
* @descripción
* elemento @param
* Nodo Elemento actual
* texto @param
* valor del atributo
* @param nivel
* Nivel
* @devolver
*/
texto de elemento de cadena estática privada (elemento elemento, texto de cadena, int lvl) {
Cadena cadena = "";
para (int i = 0; i < nivel; i++) {
cadena += " ";
}
str += "<" + elemento.getName();
si (texto! = nulo && texto! = "") {
cadena += texto;
}
// Dado que no existe un atributo o método hasChild en dom4j, se debe utilizar el método nodeCount() para determinar cuándo hay nodos secundarios.
int recuento = elemento.nodeCount();
si (cuenta == 0) {
devolver cadena += ">";
}
devolver cadena += ">/n";
}
/**
*
* @description Leer archivo XML
* archivo @param
* Ruta del archivo XML, incluido el nombre del archivo
* @return Documento documento
* @throws MalformedURLException
* @throws DocumentException
*/
La lectura de documento estático público (archivo de cadena) arroja una excepción MalformedURLException,
Excepción de documento {
Lector SAXReader = nuevo SAXReader();
Documento documento = lector.read(nuevo archivo(archivo));
documento de devolución;
}
/**
* Obtener el nodo raíz del documento Documento
*
* documento @param
* @devolver
*/
Elemento estático público getRootElement (documento) {
devolver document.getRootElement();
}
}