Java操作XML(使用org.w3c.dom)3/3

三、新建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文件绝对路径
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值