Java:
XMLの扱い方

方法:

Javaには、XMLを操作するためにDOM(Document Object Model)、SAX(Simple API for XML)、およびStAX(Streaming API for XML)のようなAPIが提供されています。次は、XMLファイルをパースするためのDOMの例です:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class XmlParser {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("data.xml");
            
            doc.getDocumentElement().normalize();
            NodeList nodeList = doc.getElementsByTagName("employee");
            
            for (int i = 0; i < nodeList.getLength(); i++) {
                Element element = (Element) nodeList.item(i);
                System.out.println("Name: " + element.getElementsByTagName("name").item(0).getTextContent());
                System.out.println("Age: " + element.getElementsByTagName("age").item(0).getTextContent());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

data.xmlが次のようであるとします:

<employees>
    <employee>
        <name>Jane Doe</name>
        <age>30</age>
    </employee>
    <employee>
        <name>John Doe</name>
        <age>40</age>
    </employee>
</employees>

出力は次のようになります:

Name: Jane Doe
Age: 30
Name: John Doe
Age: 40

深掘り

XMLは90年代後半から存在しており、異なるシステム間でデータを交換するための構造化された柔軟な方法を提供しています。JSONはそのシンプルな構文とJavaScriptとの密接な統合により新しいWeb APIに対してより人気がありますが、XMLはエンタープライズ環境、SOAPベースのWebサービス、およびMicrosoft Office用のOffice Open XMLのようなドキュメント標準で広く使用され続けています。

JavaでのXMLの解析に関しては、DOM APIは小さなドキュメントには適しています:これはツリーベースであり、メモリ内のXML構造に完全にアクセスできます。しかし、大きなファイルについては、メモリを多く消費する可能性があります。SAXとStAXはイベント駆動およびストリームベースであるため、よりメモリに優しいですが、XML構造のナビゲーションには便利ではないかもしれません。

XMLの作成または変更については、Javaはjavax.xml.transformおよびjavax.xml.bind(JAXB)パッケージも提供しています。JAXBはJava SEのバージョン10までの一部でしたが、その後Java SEからJava EEモジュールが削除されたため、別のライブラリになりました。これはJavaオブジェクトをXMLにシリアライズし、その逆を行う方法を提供するアノテーション駆動の方法です。

関連情報

JavaでのXMLの取り扱いに関するこれらの関連情報も参照してください: