读取 XML 文件

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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(("`Java`")) -.-> java/SystemandDataProcessingGroup(["`System and Data Processing`"]) 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 代码读取这些数据。

~/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 文件并从中提取数据。

您可能感兴趣的其他 Java 教程