============== voca.xml ===============

<?xml version="1.0" encoding="UTF-8"?>
<toeic>
 <words chapter="1" num="1" type="명사">
  <word voca="school">
   <mean>학교</mean>
  </word>
 </words>
 <words chapter="2" num="1" type="동사">
  <word voca="order">
   <mean>주문하다</mean>
  </word>
 </words>
 <words chapter="3" num="2" type="동사">
  <word voca="ascerain">
   <mean>확인하다</mean>
   <mean>알아내다</mean>
  </word>
  <word voca="attest">
   <mean>증명하다</mean>
   <mean>~의 증거가 되다</mean>
  </word>
 </words>
</toeic>

 

============== Voca.java ===============

package xml;

import java.io.*; // File, IOException
import javax.xml.parsers.*; // DocumentBuilder, DocumentBuilderFactory, ParserConfigurationException
import org.w3c.dom.*; // Document, NamedNodeMap, Node, NodeList

public class Voca{
 private String xml = "toeic\\voca.xml";
 
 private DocumentBuilderFactory dbf;
 private DocumentBuilder db;
 private Document document;
 
 public Voca(){
  init(); // 초기화
  open(new File(xml)); // xml 파일을 읽어들임
  // xml 파일을 출력, "words" : xml 내의 엘리먼트 중 하나, "voca" : 속성이름
  printXML("words", "voca");
 }
 public void init(){
  dbf = DocumentBuilderFactory.newInstance(); // 인스턴스를 할당
  try{ db = dbf.newDocumentBuilder(); } catch(Exception e){} // ParserConfigurationException
 }
 public void open(File xmlFile){
  // xml 파일을 파서하여 document에 넣어둠
  try{ document = db.parse(xmlFile); } catch(Exception e){} // org.xml.sax.SAXException, IOException
 }
 public void printXML(String elementName, String attrName){
  if(document != null){ // 문서가 비어있지 않은 경우
   NodeList list = document.getElementsByTagName("words");
   for(int i = 0; i<list.getLength(); i++){
    Node node = list.item(i); // 엘리먼트 이름이 words인 노드를 차례대로 반환(type. Node)
    NamedNodeMap attrs = node.getAttributes(); // words의 속성들을 반환(type. Node)
    for(int  j= 0; j< attrs.getLength(); j++){
     System.out.print(attrs.item(j)); // 속성을 순서대로 출력반환(type. Node)
     if(j != attrs.getLength()-1) System.out.print(", ");
     else System.out.println();
    }

    NodeList nodes = node.getChildNodes(); // words의 자식 노드(word)들을 반환한다
    for(int j = 0; j<nodes.getLength(); j++){
     Node word = nodes.item(j);

     // word가 엘리먼트 노드(태그노드)인 경우
     if(word.getNodeType() == Node.ELEMENT_NODE){
      NamedNodeMap nnm = word.getAttributes();
      Node voca = nnm.getNamedItem("voca");
      System.out.print("▷ "+voca.getNodeValue() + " : ");
      
      NodeList means = word.getChildNodes();
      for(int k = 0; k < means.getLength(); k++){
       Node mean = means.item(k);
       if(mean.getNodeType() == Node.ELEMENT_NODE){
        // mean 엘리먼트의 텍스트 내용을 반환(type. String)
        System.out.print(mean.getTextContent());
        
        if(k != means.getLength()-2) System.out.print(", ");
        else System.out.println();
       } // if
      } // for
     } // if
    } // for
   } // if
  }
 }
 public static void main(String[] args){
  new Voca();
 }
}

'Java' 카테고리의 다른 글

[Java] File  (0) 2010.07.02
[Java] Thread.yeild  (0) 2010.06.25
[Java] Ant, Eclipse에서 jar만들기  (0) 2010.06.23
[Java] 페이지 이동  (0) 2010.06.22
[Java] Java Property(ClassLoader)  (0) 2010.06.17

+ Recent posts