DOM 역파싱 (doc를 xml로 변환)

DOM 역파싱 (doc를 xml로 변환)

혼자 해본 것이기 때문에 정석 방법이 아닐 수 있다.

 

company.xml

<?xml version=”1.0″ encoding=”EUC-KR”?>
<company>
      <product>
            <no>1</no>
            <name>비누</name>
            <price>2000</price>
      </product>

      <product>
            <no>2</no>
            <name>샴푸</name>
            <price>5000</price>
      </product>
      <product>
            <no>3</no>
            <name>폼클렌징</name>
            <price>4000</price>
      </product> 
</company>

 

MainClass.class

package dom;

import java.io.File;
import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class MainClass {

      public static void main(String[] args) {
            Document doc;
            Element root;

       //1. xml문서를 doc변수에 전부 기억시킴
       try{
  
       DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
       DocumentBuilder db=dbf.newDocumentBuilder();
       doc=db.parse(new File(“src\\company.xml”));
       root=doc.getDocumentElement();
  
       //2. 노드리스트-엘리먼트-아이템-차일드의 밸류값 바꾸기
       NodeList node;

       node=root.getElementsByTagName(“no”); node.item(2).getFirstChild().setNodeValue(“99”);
       node=root.getElementsByTagName(“name”); node.item(2).getFirstChild().setNodeValue(“입욕제”);
       node=root.getElementsByTagName(“price”); node.item(2).getFirstChild().setNodeValue(“10000”);
   
       //3. 역파싱 (doc -> xml)
       TransformerFactory transformerFactory = TransformerFactory.newInstance();
       Transformer transformer = transformerFactory.newTransformer();
  
       DOMSource source = new DOMSource(doc);//저장할 도큐먼트  
       StreamResult result = new StreamResult(new File(“src\\company.xml”));//저장위치 지정 (파일로 저장)
                      // StreamResult result = new StreamResult(System.out);//(테스트용으로 콘솔창에 뿌리기)
       transformer.setOutputProperty(OutputKeys.ENCODING, “EUC-KR”);//한글로 인코딩

       transformer.transform(source, result);//저장
       System.out.println(“파일이 저장되었습니다”);
       
       }catch(Exception ex){System.out.println(ex.getMessage());}
  
      } 
}