Java DOM4J Parser - Parse XML Document
Langkah-langkah untuk Menggunakan DOM4J
Berikut adalah langkah-langkah yang digunakan saat mengurai dokumen menggunakan DOM4J Parser.
Impor paket terkait XML.
Buat SAXReader.
Buat Dokumen dari file atau aliran.
Dapatkan node yang diperlukan menggunakan XPath Expression dengan memanggil document.selectNodes ()
Ekstrak elemen root.
Iterasi daftar node.
Periksa atributnya.
Periksa sub-elemen.
Impor paket terkait XML
import java.io.*;
import java.util.*;
import org.dom4j.*;
Buat DocumentBuilder
SAXBuilder saxBuilder = new SAXBuilder();
Buat Dokumen dari file atau aliran
File inputFile = new File("input.txt");
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(inputFile);
Ekstrak elemen root
Element classElement = document.getRootElement();
Periksa atributnya
//returns specific attribute
valueOf("@attributeName");
Periksa sub-elemen
//returns first child node
selectSingleNode("subelementName");
Contoh Demo
Berikut adalah file input xml yang perlu kita parse -
<?xml version = "1.0"?>
<class>
<student rollno = "393">
<firstname>dinkar</firstname>
<lastname>kad</lastname>
<nickname>dinkar</nickname>
<marks>85</marks>
</student>
<student rollno = "493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>vinni</nickname>
<marks>95</marks>
</student>
<student rollno = "593">
<firstname>jasvir</firstname>
<lastname>singn</lastname>
<nickname>jazz</nickname>
<marks>90</marks>
</student>
</class>
DOM4JParserDemo.java
package com.tutorialspoint.xml;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class DOM4JParserDemo {
public static void main(String[] args) {
try {
File inputFile = new File("input.txt");
SAXReader reader = new SAXReader();
Document document = reader.read( inputFile );
System.out.println("Root element :" + document.getRootElement().getName());
Element classElement = document.getRootElement();
List<Node> nodes = document.selectNodes("/class/student" );
System.out.println("----------------------------");
for (Node node : nodes) {
System.out.println("\nCurrent Element :"
+ node.getName());
System.out.println("Student roll no : "
+ node.valueOf("@rollno") );
System.out.println("First Name : "
+ node.selectSingleNode("firstname").getText());
System.out.println("Last Name : "
+ node.selectSingleNode("lastname").getText());
System.out.println("First Name : "
+ node.selectSingleNode("nickname").getText());
System.out.println("Marks : "
+ node.selectSingleNode("marks").getText());
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
Ini akan menghasilkan hasil sebagai berikut -
Root element :class
----------------------------
Current Element :student
Student roll no :
First Name : dinkar
Last Name : kad
First Name : dinkar
Marks : 85
Current Element :student
Student roll no :
First Name : Vaneet
Last Name : Gupta
First Name : vinni
Marks : 95
Current Element :student
Student roll no :
First Name : jasvir
Last Name : singn
First Name : jazz
Marks : 90