본문 바로가기
Developer/Java

[Java] Java에서 XML 파일을 읽는 방법

by 순수한소년 2016. 10. 31.
728x90
반응형

http://uterest.blogspot.kr/2014/07/java-xml-dom.html


2014년 7월 18일 금요일

Java에서 XML 파일을 읽는 방법 - (DOM 파서)


다음 방법을 통해 자바에서 XML 파일을 읽는 방법을 보여줄 예제입니다 DOM XML 파서가 . DOM 인터페이스를 이해하고 사용하기 쉬운 XML 파서입니다. 그것은 쉬운 탐색이나 조작을위한 객체로 모델링, 전체 XML 문서를 메모리에 그 파일을로드를 구문 분석합니다.

참고
DOM 파서는 천천히하고 데이터가 많이 들어있는 XML 문서를로드하는 경우 많은 메모리를 소모합니다. 그것을 솔루션으로 SAX 파서를 고려하십시오, SAX가 DOM보다 빠르고 적은 메모리를 사용하는 것입니다.

1. DOM 파서의 예

DOM XML 파서는 XML 파일을 읽고 아래의 각 요소에게 하나씩 출력하면된다.


File : file.xml
<?xml version="1.0"?>
<company>
 <staff>
  <firstname>yong</firstname>
  <lastname>mook kim</lastname>
  <nickname>mkyong</nickname>
  <salary>100000</salary>
 </staff>
 <staff>
  <firstname>low</firstname>
  <lastname>yin fong</lastname>
  <nickname>fong fong</nickname>
  <salary>200000</salary>
 </staff>
</company>
File : ReadXMLFile.java – A Java class to read above XML file.
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
 
public class ReadXMLFile {
 
 public static void main(String argv[]) {
 
   try {
 
  File fXmlFile = new File("c:\\file.xml");
  DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  Document doc = dBuilder.parse(fXmlFile);
  doc.getDocumentElement().normalize();
 
  System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
  NodeList nList = doc.getElementsByTagName("staff");
  System.out.println("-----------------------");
 
  for (int temp = 0; temp < nList.getLength(); temp++) {
 
     Node nNode = nList.item(temp);
     if (nNode.getNodeType() == Node.ELEMENT_NODE) {
 
        Element eElement = (Element) nNode;
 
        System.out.println("First Name : " + getTagValue("firstname", eElement));
        System.out.println("Last Name : " + getTagValue("lastname", eElement));
               System.out.println("Nick Name : " + getTagValue("nickname", eElement));
        System.out.println("Salary : " + getTagValue("salary", eElement));
 
     }
  }
   } catch (Exception e) {
  e.printStackTrace();
   }
  }
 
  private static String getTagValue(String sTag, Element eElement) {
 NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
 
        Node nValue = (Node) nlList.item(0);
 
 return nValue.getNodeValue();
  }
 
}

2. Result

Root element :company
-----------------------
First Name : yong
Last Name : mook kim
Nick Name : mkyong
Salary : 100000
First Name : low
Last Name : yin fong
Nick Name : fong fong
Salary : 200000


728x90
반응형