Trình phân tích cú pháp Java DOM4J - Tài liệu XML phân tích cú pháp

Các bước sử dụng DOM4J

Sau đây là các bước được sử dụng khi phân tích cú pháp tài liệu bằng Trình phân tích cú pháp DOM4J.

  • Nhập các gói liên quan đến XML.

  • Tạo SAXReader.

  • Tạo Tài liệu từ một tệp hoặc luồng.

  • Nhận các nút cần thiết bằng cách sử dụng Biểu thức XPath bằng cách gọi document.selectNodes ()

  • Giải nén phần tử gốc.

  • Lặp lại danh sách các nút.

  • Kiểm tra các thuộc tính.

  • Kiểm tra các yếu tố phụ.

Nhập các gói liên quan đến XML

import java.io.*;
import java.util.*;
import org.dom4j.*;

Tạo một DocumentBuilder

SAXBuilder saxBuilder = new SAXBuilder();

Tạo tài liệu từ tệp hoặc luồng

File inputFile = new File("input.txt");
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(inputFile);

Trích xuất phần tử gốc

Element classElement = document.getRootElement();

Kiểm tra các thuộc tính

//returns specific attribute
valueOf("@attributeName");

Kiểm tra các yếu tố phụ

//returns first child node
selectSingleNode("subelementName");

Ví dụ demo

Đây là tệp xml đầu vào mà chúng ta cần phân tích cú pháp -

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

Điều này sẽ tạo ra kết quả sau:

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