IT/java

[java]xml 파싱(DocumentBuilder)

generator 2010. 4. 1. 14:42

 <?xml version="1.0" encoding="utf-8" ?>
- <root>
- <cd>
  <name>식대/간식</name>
  <code>001</code>
  </cd>
- <cd>
  <name>취미/레져</name>
  <code>002</code>
  </cd>
+ <cd>
  <name>교통</name>
  <code>003</code>
  </cd>
- <cd>
  <name>보험</name>
  <code>004</code>
  </cd>
- <cd>
  <name>저축</name>
  <code>005</code>
  </cd>
- <cd>
  <name>유흥</name>
  <code>006</code>
  </cd>
- <cd>
  <name>담배</name>
  <code>007</code>
  </cd>
- <cd>
  <name>의류</name>
  <code>008</code>
  </cd>
- <cd>
  <name>미용</name>
  <code>009</code>
  </cd>
- <cd>
  <name>세금</name>
  <code>010</code>
  </cd>
- <cd>
  <name>병원비</name>
  <code>011</code>
  </cd>
- <cd>
  <name>복권</name>
  <code>012</code>
  </cd>
- <cd>
  <name>기타</name>
  <code>013</code>
  </cd>
  </root>


<%@ page import = "javax.xml.parsers.DocumentBuilderFactory" %>
<%@ page import = "javax.xml.parsers.DocumentBuilder" %>
<%@ page import = "org.w3c.dom.Document" %>
<%@ page import = "org.w3c.dom.Element" %>
<%@ page import = "org.w3c.dom.NodeList" %>
<%@ page import = "org.w3c.dom.Node" %>
<%
 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 DocumentBuilder build = factory.newDocumentBuilder();
 Document doc = build.parse("http://fomerain.com/myholdlist?code=div");
 Element root = doc.getDocumentElement();
 NodeList all = doc.getChildNodes();
 
 for(int i=0; i< all.getLength(); i++){
  Node node = all.item(i);
  out.println("자식노드:"+node.getNodeName()+"<br>");
 }
 
 NodeList n_list = root.getElementsByTagName("cd");
 Element p = null;
 NodeList name = null;
 NodeList code = null;
 Element el_name = null;
 Element el_code = null;
 Node txtName = null;
 Node txtCode = null;
 
 for(int i=0; i<n_list.getLength(); i++){
    p = (Element) n_list.item(i);
    name = p.getElementsByTagName("name");
    code = p.getElementsByTagName("code");
    el_name = (Element)name.item(0);
    el_code = (Element)code.item(0);
    txtName = el_name.getFirstChild();
    txtCode = el_code.getFirstChild();
    out.println(">>"+txtCode.getTextContent()+":"+txtName.getTextContent()+"<br>");
 }  

결과
자식노드:root
>>001:식대/간식
>>002:취미/레져
>>003:교통
>>004:보험
>>005:저축
>>006:유흥
>>007:담배
>>008:의류
>>009:미용
>>010:세금
>>011:병원비
>>012:복권
>>013:기타