读取 XML 文件

JavaBeginner
立即练习

介绍

在本实验中,我们将学习如何使用 Java 读取 XML 文件。我们将使用一个示例 XML 文件来演示如何使用 Java 代码读取该文件。XML 是一种用于存储和传输数据的标记语言。

创建一个示例 XML 文件

我们将使用一个示例 XML 文件 students.xml 作为示例。它包含一些关于学生的数据,我们将使用 Java 代码读取这些数据。

~/project 目录下创建一个名为 students.xml 的新文件,内容如下:

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

导入所需的库

我们将使用以下库来通过 Java 代码读取 XML 文件:

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

在代码文件的开头添加以下语句以导入所需的库:

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

解析 XML 文件

~/project 目录下创建一个名为 Main 的新 Java 类,内容如下:

public class Main {
    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
        DocumentBuilderFactory dBfactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = dBfactory.newDocumentBuilder();
        // 获取 XML 文件
        Document document = builder.parse(new File("students.xml"));
        document.getDocumentElement().normalize();
        // 获取根节点
        Element root = document.getDocumentElement();
        System.out.println(root.getNodeName());
        // 获取所有学生
        NodeList nList = document.getElementsByTagName("student");
        System.out.println(".................................");
    }
}

我们创建了一个 builder 实例,并使用 parse 方法解析了 XML 文件。之后,我们获取文档的根元素并对其进行规范化,然后打印其名称。接着,我们使用 getElementsByTagName 方法获取所有学生并打印一个分隔符。

从每个元素中提取数据

为了从每个元素中提取数据,我们将使用循环遍历文档的每个标签。对于每个学生,我们将获取他们的详细信息,例如 ID、姓名、学号和位置。

请在循环内添加以下代码:

Node node = nList.item(i);
System.out.println();    // 只是一个分隔符
if (node.getNodeType() == Node.ELEMENT_NODE) {
    // 打印每个学生的详细信息
    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。使用 getElementsByTagNamegetTextContent 方法获取每个学生的姓名、学号和位置。

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

总结

在本实验中,我们学习了如何使用 Java 代码读取 XML 文件。我们掌握了如何导入所需的库、解析 XML 文件、遍历根元素的每个节点,以及从每个元素中提取数据。你可以利用这些知识,使用 Java 读取任何 XML 文件并从中提取数据。