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());} } }
|

