Introducción
En este laboratorio, aprenderemos a leer un archivo XML utilizando Java. Utilizaremos un archivo XML de muestra para demostrar la lectura del archivo utilizando código Java. XML es un lenguaje de marcado utilizado para almacenar y transportar datos.
Crear un archivo XML de muestra
Utilizaremos un archivo XML de muestra students.xml como ejemplo. Contiene algunos datos sobre estudiantes y los leeremos utilizando código Java.
Crea un nuevo archivo llamado students.xml en el directorio ~/project con el siguiente contenido:
<students>
<student id="101">
<Name>John</Name>
<id>11001</id>
<location>India</location>
</student>
<student id="102">
<Name>Alex</Name>
<id>11002</id>
<location>Russia</location>
</student>
<student id="103">
<Name>Rohan</Name>
<id>11003</id>
<location>USA</location>
</student>
</students>
Importar las bibliotecas necesarias
Utilizaremos las siguientes bibliotecas para leer un archivo XML utilizando código Java:
org.w3c.dom.*javax.xml.parsers.*
Agrega las siguientes declaraciones al principio del archivo de código para importar las bibliotecas necesarias:
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import java.io.*;
Analizar el archivo XML
Crea una nueva clase Java llamada Main en el directorio ~/project con el siguiente contenido:
public class Main {
public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
DocumentBuilderFactory dBfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dBfactory.newDocumentBuilder();
// Fetch XML File
Document document = builder.parse(new File("students.xml"));
document.getDocumentElement().normalize();
//Get root node
Element root = document.getDocumentElement();
System.out.println(root.getNodeName());
//Get all students
NodeList nList = document.getElementsByTagName("student");
System.out.println(".................................");
}
}
Hemos creado una instancia del constructor y analizado el archivo XML utilizando el método parse. Después de eso, obtenemos el elemento raíz del documento y lo normalizamos y luego imprimimos su nombre. Después de eso, obtenemos a todos los estudiantes utilizando el método getElementsByTagName e imprimimos un separador.
Extraer datos de cada elemento
Para extraer datos de cada elemento, iteraremos a través de cada etiqueta del documento utilizando un bucle. Para cada estudiante, obtendremos sus detalles como ID, Nombre, Número de Matrícula y Ubicación.
Agrega el siguiente código dentro del bucle:
Node node = nList.item(i);
System.out.println(); //Just a separator
if (node.getNodeType() == Node.ELEMENT_NODE) {
//Print each student's detail
Element element = (Element) node;
System.out.println("Student id : " + element.getAttribute("id"));
System.out.println("Name : " + element.getElementsByTagName("Name").item(0).getTextContent());
System.out.println("Roll No : " + element.getElementsByTagName("id").item(0).getTextContent());
System.out.println("Location : " + element.getElementsByTagName("location").item(0).getTextContent());
}
El código anterior extraerá los datos de cada elemento del archivo XML. Utilizando el método getAttribute, se recupera el ID de cada estudiante. Utilizando los métodos getElementsByTagName y getTextContent, se recuperan el Nombre, el Número de Matrícula y la Ubicación de cada estudiante.
Ejecutar el código Java
Compila y ejecuta el código en la terminal:
javac Main.java && java Main
Deberías ver la siguiente salida:
students
.................................
Student id : 101
Name : John
Roll No : 11001
Location : India
Student id : 102
Name : Alex
Roll No : 11002
Location : Russia
Student id : 103
Name : Rohan
Roll No : 11003
Location : USA
Resumen
En este laboratorio, hemos aprendido cómo leer un archivo XML utilizando código Java. Hemos aprendido cómo importar las bibliotecas necesarias, analizar un archivo XML, iterar a través de cada nodo del elemento raíz y extraer datos de cada elemento. Puedes utilizar este conocimiento para leer cualquier archivo XML utilizando Java y extraer datos de él.



