3D Graphic Technical Artist

[XML 파싱 실습1]DOM Parser로 XML 파일 파싱하기 본문

공부(~2014)/XML

[XML 파싱 실습1]DOM Parser로 XML 파일 파싱하기

er1ca 2013. 4. 3. 10:35

#1. DomParser란?

 

#2. XML 파싱 실습 시나리오

1) XML 파일 임의로 만듬

2) Parser Library JDK JRE에 적용

3) DomParser를 이용해서 XML 파일 읽어서

4) VO 객체에 저장하고

5) Console 화면으로 출력

 

#3. Directory 구조

 

 

 

 

#4. 코드

Data.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<item>
 <data>
  <title>Neutral</title>
  <link>raszagal</link>
  <pubDate>2011.3.22</pubDate>
 </data>
 <data>
  <title>Google</title>
  <link>www.google.com</link>
  <pubDate>1975.9.15</pubDate>
 </data>
 <data>
  <title>Microsoft</title>
  <link>www.microsoft.com</link>
  <pubDate>1975.4.4</pubDate>
 </data>
</item> 

 

 

DomParser.java

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class DomParser {
 private File file;
 private DocumentBuilderFactory documentBuilderFactory;
 private DocumentBuilder documentBuilder;
 private Document document;
 private NodeList nodeList;
 
 public DomParser(File file){
  super(); //?
  this.file = file;
  
  try {
   documentBuilderFactory = DocumentBuilderFactory.newInstance();
   documentBuilder = documentBuilderFactory.newDocumentBuilder();   
   document = documentBuilder.parse(this.file);

  } catch (ParserConfigurationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SAXException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }


  //파싱하는 부분
 public List<XmlDataVO> parse(String tagName){
  List<XmlDataVO> listOfData = new ArrayList<XmlDataVO>();
  nodeList = document.getElementsByTagName(tagName);
  for(int i = 0; i < nodeList.getLength() ; i ++){
   Element element = (Element) nodeList.item(i);
   String title = this.getTagValue("title",element);
   String link = this.getTagValue("link", element);
   String pubDate = this.getTagValue("pubDate",element);
   listOfData.add(new XmlDataVO(title, link, pubDate));
  }
  
  return listOfData;
 }


 private String getTagValue(String tagName, Element element){
  NodeList nodeList = element.getElementsByTagName(tagName).item(0).getChildNodes();
  Node node = nodeList.item(0);
  return node.getNodeValue();
 }
}

 

 

XmlDataVO.java

public class XmlDataVO {


 private String title;
 private String link;
 private String pubDate;
 
 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public String getLink() {
  return link;
 }

 public void setLink(String link) {
  this.link = link;
 }

 public String getPubDate() {
  return pubDate;
 }

 public void setPubDate(String pubDate) {
  this.pubDate = pubDate;
 }

 
 public XmlDataVO(){
  this("", "", "");
 }

 public XmlDataVO(String title, String link, String pubDate) {
  // TODO Auto-generated constructor stub
  super();
  this.title = title;
  this.link = link;
  this.pubDate = pubDate;
  
  
 }
 
 @Override
 public String toString() {
  return "XmlDateVO [title="+title+", link =" +link + ", pubDate=" +pubDate+"]\n";
 }

}

 

printData.java

 

import java.io.File;
import java.util.List;


public class printData {


 public static void main(String[] args) {
  File file = new File("Data.xml");
  DomParser domParser = new DomParser(file);
  
  List<XmlDataVO> result = domParser.parse("data");
  System.out.println(result.toString());
  
 }

 

#5. 결과 화면

 

 


 

 

##.

DOM 파서를 처음 사용해 보았다.

라이브러리를 가져다 사용하는건 언제든 신기한거같다

 

아직 XML의 node 형태를 어떻게 가져오는지 정확하게 모르겠지만

우선 예제 코드를 이용해서 Parser를 사용해보았다는데 의의를 두었다.

 

이후에는 xml node를 어떻게 접근해서 가져오는지 하나하나 코드를 파악하고

출력도 단순히 console이 아닌 다른 형태의 xml 파일로 출력하는 실습을 진행해야겠다.

 

'공부(~2014) > XML' 카테고리의 다른 글

xquery plugin XQDT 사용하기  (0) 2013.06.07
DOM parser VS SAX parser  (0) 2013.04.17
XML이란  (0) 2013.04.17
[XML 파싱 실습2] XML 파일을 DB에 저장하기  (0) 2013.04.03