XML ファイルを読む

JavaJavaBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Java を使って XML ファイルを読み取る方法を学びます。Java コードを使ってファイルを読み取る方法を示すために、サンプル XML ファイルを使います。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 ディレクトリに新しい Java クラス Main を作成し、以下の内容を記述します。

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

ビルダーのインスタンスを作成し、parse メソッドを使って XML ファイルを解析しました。その後、ドキュメントのルート要素を取得して正規化し、その名前を表示します。その後、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

まとめ

この実験では、Java コードを使って XML ファイルを読み取る方法を学びました。必要なライブラリをインポートする方法、XML ファイルを解析する方法、ルート要素の各ノードを反復処理する方法、および各要素からデータを抽出する方法を学びました。この知識を使って、Java を使って任意の XML ファイルを読み取り、そこからデータを抽出することができます。