============== 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 |