XML 파일 읽기

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 를 사용하여 XML 파일을 읽는 방법을 배웁니다. Java 코드를 사용하여 파일을 읽는 것을 시연하기 위해 샘플 XML 파일을 사용할 것입니다. XML 은 데이터를 저장하고 전송하는 데 사용되는 마크업 언어입니다.

샘플 XML 파일 생성

예제로 students.xml이라는 샘플 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 디렉토리에 Main이라는 새 Java 클래스를 만들고 다음 내용을 추가합니다.

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 를 검색합니다. getElementsByTagNamegetTextContent 메서드를 사용하여 각 학생의 이름, 롤 번호 및 위치를 검색합니다.

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 파일을 파싱 (parsing) 하고, 루트 요소의 각 노드를 반복하고, 각 요소에서 데이터를 추출하는 방법을 배웠습니다. 이 지식을 사용하여 Java 를 사용하여 모든 XML 파일을 읽고 데이터를 추출할 수 있습니다.