2013년 2월 25일 월요일

[참고] java 에서 Xml 파일 만드는 예제


참조: http://theeye.pe.kr/entry/Java-DOM%ED%8C%8C%EC%84%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-XML-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0

Java에는 다양한 XML 파서를 이용할 수 있습니다. 그중에 DOM이 가장 직관적이고 쉬운 방법으로 XML을 처리할 수 있지 않을까 생각됩니다. DOM을 이용하여 XML을 생성하기 위해서는 기본적으로 모든 XML의 내용을 정의할 수 있는 Document를 생성해야 하는데요 이것을 생성하기 위해 DocumentBuilder 클래스를 사용합니다.

마지막으로 만들어진 XML 엘리먼트 노드들이 연결된 Document를 가지고 XML 파일을 생성하는데 이때에 Transformer 클래스를 사용합니다.

DOM Parser 결과물

이 예제를 수행하게 되면 다음의 같은 내용을 가진 file.xml 파일이 생성됩니다.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <company>
        <staff id="1">
                <firstname>Gildong</firstname>
                <lastname>Hong</lastname>
                <nickname>Mr.Hong</nickname>
                <salary>100000</salary>
        </staff>
</company>

Java 클래스 소스

try
{
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        // 루트 엘리먼트
        Document doc = docBuilder.newDocument();
        Element rootElement = doc.createElement("company");
        doc.appendChild(rootElement);
        // staff 엘리먼트
        Element staff = doc.createElement("Staff");
        rootElement.appendChild(staff);
        // 속성값 정의
        Attr attr = doc.createAttribute("id");
        attr.setValue("1");
        staff.setAttributeNode(attr);
        // 속성값을 정의하는 더 쉬운 방법
        // staff.setAttribute("id", "1");
        // firstname 엘리먼트
        Element firstname = doc.createElement("firstname");
        firstname.appendChild(doc.createTextNode("Gildong"));
        staff.appendChild(firstname);
        // lastname 엘리먼트
        Element lastname = doc.createElement("lastname");
        lastname.appendChild(doc.createTextNode("Hong"));
        staff.appendChild(lastname);
        // nickname 엘리먼트
        Element nickname = doc.createElement("nickname");
        nickname.appendChild(doc.createTextNode("Mr.Hong"));
        staff.appendChild(nickname);
        // salary 엘리먼트
        Element salary = doc.createElement("salary");
        salary.appendChild(doc.createTextNode("100000"));
        staff.appendChild(salary);
        // XML 파일로 쓰기
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new FileOutputStream(new File("C:\\file.xml")));
        // 파일로 쓰지 않고 콘솔에 찍어보고 싶을 경우 다음을 사용 (디버깅용)
        // StreamResult result = new StreamResult(System.out);
        transformer.transform(source, result);
        System.out.println("File saved!");
}
catch (ParserConfigurationException pce)
{
        pce.printStackTrace();
}
catch (TransformerException tfe)
{
        tfe.printStackTrace();
}

댓글 없음:

댓글 쓰기