Чтение XML-файла

JavaJavaBeginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся читать XML-файл с использованием Java. Для демонстрации процесса чтения файла с помощью кода на Java мы будем использовать пример XML-файла. XML - это язык разметки, используемый для хранения и передачи данных.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) 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{{"Чтение XML-файла"}} java/output -.-> lab-117444{{"Чтение XML-файла"}} java/classes_objects -.-> lab-117444{{"Чтение XML-файла"}} java/files -.-> lab-117444{{"Чтение XML-файла"}} java/io -.-> lab-117444{{"Чтение XML-файла"}} java/xml_dom4j -.-> lab-117444{{"Чтение XML-файла"}} java/string_methods -.-> lab-117444{{"Чтение XML-файла"}} end

Создайте пример XML-файла

В качестве примера мы будем использовать XML-файл students.xml. Он содержит некоторые данные о студентах, которые мы будем читать с использованием кода на Java.

Создайте новый файл с именем students.xml в каталоге ~/project с следующим содержимым:

<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>

Импортируйте необходимые библиотеки

Для чтения XML-файла с использованием кода на Java мы будем использовать следующие библиотеки:

  • org.w3c.dom.*
  • javax.xml.parsers.*

Добавьте следующие инструкции в начало файла с кодом, чтобы импортировать необходимые библиотеки:

import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import java.io.*;

Анализируйте XML-файл

Создайте новый Java-класс с именем Main в каталоге ~/project с следующим содержимым:

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(".................................");
    }
}

Мы создали экземпляр билдера и проанализировали XML-файл с использованием метода parse. Затем мы получаем корневой элемент документа, нормализуем его и выводим его имя. После этого мы получаем всех студентов с использованием метода getElementsByTagName и выводим разделитель.

Извлеките данные из каждого элемента

Для извлечения данных из каждого элемента мы будем перебирать каждый тег документа с использованием цикла. Для каждого студента мы получим их данные, такие как ID, Имя, Номер зачетной книжки и Местонахождение.

Добавьте следующий код внутри цикла:

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());
}

Вышеприведенный код извлечет данные из каждого элемента XML-файла. С использованием метода getAttribute получается ID каждого студента. С использованием методов getElementsByTagName и getTextContent получаются Имя, Номер зачетной книжки и Местонахождение каждого студента.

Запустите код на Java

Компилируйте и запускаете код в терминале:

javac Main.java && java Main

Вы должны увидеть следующий вывод:

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

Резюме

В этом практическом занятии мы научились читать XML-файл с использованием кода на Java. Мы узнали, как импортировать необходимые библиотеки, анализировать XML-файл, перебирать каждый узел корневого элемента и извлекать данные из каждого элемента. Вы можете использовать эти знания для чтения любого XML-файла с использованием Java и извлечения из него данных.