三、新建XML文件
1
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
XmlCreater.java
用于创建XML文件
/********************************************************************
* 项目名称 :rochoc <p>
* 包名称 :rochoc.xml.oper <p>
* 文件名称 :XmlCreater <p>
* 编写者 :luoc <p>
* 编写日期 :2005-6-22 <p>
* 程序功能(类)描述 : 创建DOM并生成XML文件 <p>
*
* 程序变更日期 :
* 变更作者 :
* 变更说明 :
********************************************************************/
package
rochoc.xml.oper;
import
java.io.File;
import
javax.xml.parsers.DocumentBuilder;
import
javax.xml.parsers.DocumentBuilderFactory;
import
javax.xml.parsers.ParserConfigurationException;
import
javax.xml.transform.Transformer;
import
javax.xml.transform.TransformerConfigurationException;
import
javax.xml.transform.TransformerException;
import
javax.xml.transform.TransformerFactory;
import
javax.xml.transform.dom.DOMSource;
import
javax.xml.transform.stream.StreamResult;
import
org.apache.log4j.Logger;
import
org.w3c.dom.Document;
import
org.w3c.dom.Element;
/**
* 类名:XmlCreater <p>
* 类描述: 创建DOM并生成XML文件<p>
* 编写者 :luoc<p>
* 编写日期 :2005-6-22<p>
* 主要public成员变量:<p>
* 主要public方法: <p>
**/
public
class
XmlCreater
{
/**
*构造函数说明: <p>
*参数说明:@param path xml文件路径 <p>
**/
public
XmlCreater(String path)
{
this
.path=path;
init();
}
/**
* 方法名称:init<p>
* 方法功能: 初始化函数 <p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/
private
void
init()
{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder builder=factory.newDocumentBuilder();
doc=builder.newDocument();
//新建DOM
}
catch
(ParserConfigurationException e)
{
logger.error(
"Parse DOM builder error:"
+e);
}
}
/**
* 方法名称:createRootElement<p>
* 方法功能:创建根结点,并返回 <p>
* 参数说明:@param rootTagName <p>
* 返回:Element <p>
* 作者:luoc
* 日期:2005-6-22
**/
public
Element createRootElement(String rootTagName)
{
if
(doc.getDocumentElement()==
null
)
{
logger.debug(
"create root element '"
+rootTagName+
"' success."
);
Element root=doc.createElement(rootTagName);
doc.appendChild(root);
return
root;
}
logger.warn(
"this dom's root element is exist,create fail."
);
return
doc.getDocumentElement();
}
/**
* 方法名称:createElement<p>
* 方法功能:在parent结点下增加子结点tagName<p>
* 参数说明:@param parent
* 参数说明:@param tagName <p>
* 返回:Element <p>
* 作者:luoc
* 日期:2005-6-22
**/
public
Element createElement(Element parent,String tagName)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
parent.appendChild(child);
return
child;
}
/**
* 方法名称:createElement<p>
* 方法功能:在parent结点下增加值为value的子结点tabName<p>
* 参数说明:@param parent
* 参数说明:@param tagName
* 参数说明:@param value <p>
* 返回:Element <p>
* 作者:luoc
* 日期:2005-6-22
**/
public
Element createElement(Element parent,String tagName,String value)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
XmlOper.setElementValue(child,value);
parent.appendChild(child);
return
child;
}
/**
* 方法名称:createAttribute<p>
* 方法功能:在parent结点下增加属性 <p>
* 参数说明:@param parent
* 参数说明:@param attrName 属性名
* 参数说明:@param attrValue 属性值<p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/
public
void
createAttribute(Element parent,String attrName,String attrValue)
{
XmlOper.setElementAttr(parent,attrName,attrValue);
}
/**
* 方法名称:buildXmlFile<p>
* 方法功能:根据DOM生成XML文件<p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/
public
void
buildXmlFile()
{
TransformerFactory tfactory=TransformerFactory.newInstance();
try
{
Transformer transformer=tfactory.newTransformer();
DOMSource source=
new
DOMSource(doc);
logger.debug(
"New DOMSource success."
);
StreamResult result=
new
StreamResult(
new
File(path));
logger.debug(
"New StreamResult success."
);
transformer.setOutputProperty(
"encoding"
,
"GBK"
);
transformer.transform(source,result);
logger.debug(
"Build XML File '"
+path+
"' success."
);
}
catch
(TransformerConfigurationException e)
{
logger.error(
"Create Transformer error:"
+e);
}
catch
(TransformerException e)
{
logger.error(
"Transformer XML file error:"
+e);
}
}
/**
* @return 返回 doc。
*/
public
Document getDoc()
{
return
doc;
}
/**
* @param doc 要设置的 doc。
*/
public
void
setDoc(Document doc)
{
this
.doc = doc;
}
/**
* @return 返回 path。
*/
public
String getPath()
{
return
path;
}
/**
* @param path 要设置的 path。
*/
public
void
setPath(String path)
{
this
.path = path;
}
/*全局变量*/
private
Logger logger = Logger.getLogger(getClass().getName());
private
Document doc=
null
;
//新创建的DOM
private
String path=
null
;
//生成的XML文件绝对路径
}
|