Java DOM4J 파서-XML 문서 구문 분석
DOM4J 사용 단계
다음은 DOM4J 파서를 사용하여 문서를 구문 분석하는 동안 사용되는 단계입니다.
XML 관련 패키지를 가져옵니다.
SAXReader를 만듭니다.
파일 또는 스트림에서 문서를 만듭니다.
document.selectNodes ()를 호출하여 XPath 표현식을 사용하여 필요한 노드를 가져옵니다.
루트 요소를 추출하십시오.
노드 목록을 반복합니다.
속성을 조사하십시오.
하위 요소를 조사하십시오.
XML 관련 패키지 가져 오기
import java.io.*;
import java.util.*;
import org.dom4j.*;
DocumentBuilder 만들기
SAXBuilder saxBuilder = new SAXBuilder();
파일 또는 스트림에서 문서 만들기
File inputFile = new File("input.txt");
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(inputFile);
루트 요소 추출
Element classElement = document.getRootElement();
속성 검토
//returns specific attribute
valueOf("@attributeName");
하위 요소 검토
//returns first child node
selectSingleNode("subelementName");
데모 예
다음은 파싱해야하는 입력 xml 파일입니다.
<?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();
}
}
}
이것은 다음 결과를 생성합니다-
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