Save Document object to XML file
1
2
3
/**
4
* write to the .xml file
5
* @param doc
6
* @param encoding
7
* @param file
8
* @param tab
9
*/
10
public void write2xml(Document doc, String encoding, String file, int tab) {
11
if (doc == null) {
12
return;
13
}
14
StringBuffer sb = new StringBuffer();
15
// head
16
sb.append("<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>\n");
17
this.writeFormal(doc.getDocumentElement(), sb, tab);
18
// save data from memory to the *.xml file
19
FileOutputStream fos = null;
20
BufferedOutputStream bos = null;
21
try {
22
fos = new FileOutputStream(file);
23
bos = new BufferedOutputStream(fos);
24
bos.write(sb.toString().getBytes(encoding));
25
bos.close();
26
fos.close();
27
} catch (FileNotFoundException e) {
28
e.printStackTrace();
29
try {
30
if (bos != null) {
31
bos.close();
32
}
33
if (fos != null) {
34
fos.close();
35
}
36
} catch (IOException e1) {
37
e1.printStackTrace();
38
}
39
} catch (IOException e) {
40
e.printStackTrace();
41
try {
42
if (bos != null) {
43
bos.close();
44
}
45
if (fos != null) {
46
fos.close();
47
}
48
} catch (IOException e1) {
49
e1.printStackTrace();
50
}
51
}
52
}
53
54
/** private function */
55
56
private void writeFormal(Element e, StringBuffer sb, int intTab) {
57
org.w3c.dom.NodeList list = e.getElementsByTagName("*");
58
// if e has not child
59
if (list != null) {
60
// blank
61
for (int i=0; i<intTab; i++) {
62
sb.append("\t");
63
}
64
// node name
65
sb.append("<" + e.getNodeName() + ">\n");
66
// node value
67
if (list.getLength() == 0) {
68
String value = e.getFirstChild().getNodeValue().trim();
69
if (value.length() > 0) {
70
// blank
71
for (int i=0; i<intTab; i++) {
72
sb.append("\t");
73
}
74
sb.append("\t" + value + "\n");
75
}
76
}
77
else {
78
org.w3c.dom.Node node;
79
Element eChild;
80
// write the child
81
org.w3c.dom.NodeList listChild = e.getChildNodes();
82
for (int i=0; i<list.getLength(); i++) {
83
node = list.item(i);
84
// check if "node" is the close child
85
boolean bBeChild = false;
86
for (int k=0; k<listChild.getLength(); k++) {
87
if (listChild.item(k).equals(node)) {
88
bBeChild = true;
89
break;
90
}
91
}
92
// if "node" is the close child
93
if (bBeChild == true) {
94
eChild = (Element) node;
95
this.writeFormal(eChild, sb, intTab+1);
96
} // if (bBeChild == true)
97
} // for (int i=0; i<list.getLength(); i++)
98
}
99
// blank
100
for (int i=0; i<intTab; i++) {
101
sb.append("\t");
102
}
103
// end of node name
104
sb.append("</" + e.getNodeName() + ">\n");
105
} // if (list != null)
106
}

2

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

100

101

102

103

104

105

106

posted on 2007-12-30 20:04 johnsdilon 閱讀(281) 評論(0) 編輯 收藏