본문 바로가기
XML

[본문스크랩] 3.3 DOM JAXP를 사용한 XML 처리

by 사우람 2010. 7. 12.

1.  DOM 객체를 생성하여 콘솔창에 출력

 

     package jsxp;
     import javax.xml.parsers.*;
     import javax.xml.transform.*;
     import javax.xml.transform.stream.*;

     import javax.xml.transform.dom.*;
     import org.w3c.dom.Document;
     import java.io.*;
     import java.util.*;

     public class JAXPDOMTest {
 
 
      public static void main(String[] args){
  
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();


       TransformerFactory tff = TransformerFactory.newInstance();
       

        try{


        FileInputStream xmlf = new FileInputStream("D:\\SAX2.0.xml");

 

        DocumentBuilder db = dbf.newDocumentBuilder();


        Document doc = db.parse(xmlf);

 

        Node root = (Node)doc.getDocumentElement();
  

        Element info = doc.createElement("Info");
   

        info.setAttribute("Date",(new java.util.Date().toLocaleString()));
   

        root.appendChild(info);


        Transformer transformer = tff.newTransformer();


        transformer.transform(new DOMSource(doc),new StreamResult(System.out));


       }catch(Exception e){}
      }
     }

 

     1) DocumentBuilderFactory의 newInstance() 매소드가 호출될때 jaxp의 프로퍼티를

         탐색해 정해져 있는 파서를 사용하여 DocumentBuilder 객체를 생성한다.

    

      2) DocumentBuilder 객체를 통하여 XML을 새로 만들거나 기존의 소스를 읽어드려

          XML 문서를 생성한다.

 

      3) Document 객체를 통하여 문서를 조작한다.

 

      4) TransformerFactory에서 생성된 Transformer  객체를 통하여 DOM객체를 입력

          받아 파일이나, 스트림 , URI등에 출력한다.


 

 

2. DOM 객체를 생성하여 XML 만들기

 

     package jsxp;

     import javax.xml.parsers.*;
     import javax.xml.transform.stream.*;
     import javax.xml.transform.dom.*;
     import javax.xml.transform.*;
     import org.w3c.dom.*;

     import java.io.*;

     public class CreatePresident {
 
       public static void main(String[] args){
     

           Document doc;
  
           Element president;
           Element person;
           Element firstName;
           Element surname;
  
           try{
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                dbf.setIgnoringElementContentWhitespace(true);
                DocumentBuilder db = dbf.newDocumentBuilder();
                doc = db.newDocument();
   
                person = doc.createElement("Person");
                firstName = doc.createElement("FirstName");
                firstName.appendChild(doc.createTextNode("Geprge"));
                person.appendChild(firstName);
   
               surname = doc.createElement("Surname");
               surname.appendChild(doc.createTextNode("Bush"));
               person.appendChild(surname);
    
               president = doc.createElement("President");
               president.setAttribute("Country","US");
               president.appendChild(person);
   
               doc.appendChild(president);
   
               TransformerFactory tFactory = TransformerFactory.newInstance();
               Transformer transformer = tFactory.newTransformer();
               transformer.transform(new DOMSource(doc),new StreamResult(System.out));
          }catch(Exception e){
             e.printStackTrace();
          }
      }
  }

 

  1) DocumentBuilderFactory로 부터 뷸더 객체를 생성하고 뷸더 객체로 부터

      비어있는 문서를 생성한다.

 

  2) Document를 통하여 포함될 엘리먼트들을 만들고 적절히 중첩시킨다.

 

  3) XML 프롤로그 부분은 정의하지 않아도

     <?xml version="1.0" encoding="UTF-8"?>

     선언부분은 자동으로 선언되어 진다.