개발자의 끄적끄적

[java] xml 생성 예제 본문

개발/java & jsp

[java] xml 생성 예제

효벨 2020. 5. 20. 12:23
728x90
반응형

[java] xml 생성 예제

 

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

        }

 

    }

 

}

 

 

 

 

출처 : https://huskdoll.tistory.com/869

반응형
Comments