상세 컨텐츠

본문 제목

java로 xml 생성

프로그램 언어/Java

by husks 2018. 11. 19. 12:09

본문

반응형


java 로 xml 생성 하는 소스 입니다.


인터넷으로 검색한 결과 가장 이해하기 쉽고 간단한 소스 같습니다.


저같은 경우 정렬문제와 standalone="no" 이 상위에 포함되는 문제가 있었는데 해당 소스에서는 해당 문제를 해결했습니다.




위와 같은 형식으로 생성되는 소스입니다.


어렵지 않아서 보시면 금방 이해 되실꺼 같습니다.


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.io.File;
import java.io.FileOutputStream;
 
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;
 
public class CreateXml {
 
    public static void main (String[] args) {
 
        try
        {
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
 
            // book 엘리먼트
            Document doc = docBuilder.newDocument();
            doc.setXmlStandalone(true); //standalone="no" 를 없애준다.
 
            Element book = doc.createElement("book");
            doc.appendChild(book);
 
            // code 엘리먼트
            Element code = doc.createElement("code");
            book.appendChild(code);
 
            // 속성값 정의 (id:1)
            code.setAttribute("id""1");
            //code.setAttribute("type", "novel");
 
            // name 엘리먼트
            Element name = doc.createElement("name");
            name.appendChild(doc.createTextNode("사람은 무엇으로 사는가?"));
            code.appendChild(name);
 
            // writer 엘리먼트
            Element writer = doc.createElement("writer");
            writer.appendChild(doc.createTextNode("톨스토이"));
            code.appendChild(writer);
 
            // price 엘리먼트
            Element price = doc.createElement("price");
            price.appendChild(doc.createTextNode("100"));
            code.appendChild(price);
 
            code = doc.createElement("code");
            book.appendChild(code);
 
            // 속성값 정의 (id:2)
            code.setAttribute("id""2");
            code.setAttribute("type""novel");
 
            // name 엘리먼트
            name = doc.createElement("name");
            name.appendChild(doc.createTextNode("홍길동 전"));
            code.appendChild(name);
 
            // writer 엘리먼트
            writer = doc.createElement("writer");
            writer.appendChild(doc.createTextNode("허균"));
            code.appendChild(writer);
 
            // price 엘리먼트
            price = doc.createElement("price");
            price.appendChild(doc.createTextNode("300"));
            code.appendChild(price);
 
            // XML 파일로 쓰기
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
 
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount""4"); //정렬 스페이스4칸
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //들여쓰기
            transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes"); //doc.setXmlStandalone(true); 했을때 붙어서 출력되는부분 개행
 
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new FileOutputStream(new File("D://tmp/book.xml")));
 
            transformer.transform(source, result);
 
            System.out.println("=========END=========");
 
        }catch (Exception e){
            e.printStackTrace();
        }
 
    }
 
}
 



반응형

관련글 더보기

댓글 영역