Leer un archivo XML

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/io("IO") java/SystemandDataProcessingGroup -.-> java/xml_dom4j("XML/Dom4j") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/for_loop -.-> lab-117444{{"Leer un archivo XML"}} java/output -.-> lab-117444{{"Leer un archivo XML"}} java/classes_objects -.-> lab-117444{{"Leer un archivo XML"}} java/files -.-> lab-117444{{"Leer un archivo XML"}} java/io -.-> lab-117444{{"Leer un archivo XML"}} java/xml_dom4j -.-> lab-117444{{"Leer un archivo XML"}} java/string_methods -.-> lab-117444{{"Leer un archivo XML"}} end

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.