Posted on 2009-06-19 09:10
周競先 閱讀(1578)
評論(0) 編輯 收藏 所屬分類:
J2EE 、
xml
很久沒用xml了,最近項目應該會用到,故昨晚回家寫了個測試程序,代碼如下:
1 package com.potevio.telecom;
2
3 //文件類
4 import java.io.File;
5 import java.io.FileNotFoundException;
6
7 //文件輸出類
8 import java.io.FileOutputStream;
9 import java.io.IOException;
10
11 //負責解析的類
12 import javax.xml.parsers.DocumentBuilder;
13 import javax.xml.parsers.DocumentBuilderFactory;
14 import javax.xml.parsers.ParserConfigurationException;
15
16 //映射類
17 import javax.xml.transform.Transformer;
18 import javax.xml.transform.TransformerConfigurationException;
19 import javax.xml.transform.TransformerException;
20 import javax.xml.transform.TransformerFactory;
21
22 //xml映射輸入和輸出類
23 import javax.xml.transform.dom.DOMSource;
24 import javax.xml.transform.stream.StreamResult;
25
26 //節點類
27 import org.w3c.dom.Comment;
28 import org.w3c.dom.Document;
29 import org.w3c.dom.Element;
30 import org.w3c.dom.Node;
31 import org.w3c.dom.NodeList;
32
33 /**
34 * @description 構造一個北京到長沙的簡單列車時刻表.用DOM的方式實現.
35 *
36 * @author Zhou-Jingxian
37 *
38 * @date Jun 18, 2009
39 *
40 */
41 public class CreateXMLContent {
42
43 public static void main(String args[]){
44
45 try {
46 //構造的原始數據對象
47 String train[] = {"T1次","K185次","Z17次"};
48 String type[] = {"特快","普快","直達"};
49 String startTime[] = {"15:45","11:47","18:10"};
50
51 //解析器工廠類
52 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
53
54 //解析器
55 DocumentBuilder builder = factory.newDocumentBuilder();
56
57 //操作的Document對象
58 Document document = builder.newDocument();
59
60 //設置XML的版本
61 document.setXmlVersion("1.0");
62
63 //添加注釋
64 Comment xmlComment = document.createComment("本文檔中內容主要用于測試!");
65
66 //將注釋添加到xml中
67 document.appendChild(xmlComment);
68
69 //設置根節點名稱
70 Element traintimelist = document.createElement("火車時刻表");
71
72 //把節點添加到根節點
73 document.appendChild(traintimelist);
74
75 for(int k = 1; k <=train.length; k++){
76 traintimelist.appendChild(document.createElement("車次"));
77 }
78
79 NodeList nodeList = document.getElementsByTagName("車次");
80 int size = nodeList.getLength();
81 for(int k = 0; k<size; k++){
82 Node node = nodeList.item(k);
83 if(node.getNodeType() == Node.ELEMENT_NODE){
84 Element elementNode = (Element)node;
85 elementNode.setAttribute("類別", type[k]);
86 elementNode.appendChild(document.createElement("名字"));
87 elementNode.appendChild(document.createElement("開車時間"));
88
89 }
90 }
91
92 nodeList = document.getElementsByTagName("名字");
93 size = nodeList.getLength();
94 for(int k = 0; k<size; k++){
95 Node node = nodeList.item(k);
96 if(node.getNodeType() == Node.ELEMENT_NODE){
97 Element elementNode = (Element)node;
98 elementNode.appendChild(document.createTextNode(train[k]));
99
100 }
101 }
102
103 nodeList = document.getElementsByTagName("開車時間");
104 size = nodeList.getLength();
105 for(int k = 0; k<size; k++){
106 Node node = nodeList.item(k);
107 if(node.getNodeType() == Node.ELEMENT_NODE){
108 Element elementNode = (Element)node;
109 elementNode.appendChild(document.createTextNode(startTime[k]));
110
111 }
112 }
113
114 //開始把Document映射到文件
115 TransformerFactory transFactory = TransformerFactory.newInstance();
116 Transformer transformer = transFactory.newTransformer();
117
118 //設置輸出結果
119 DOMSource domSource = new DOMSource(document);
120
121 //生成xml文件
122 File file = new File("北京到長沙火車時刻表.xml");
123
124 //判斷是否存在,如果不存在,則創建
125 if(!file.exists()){
126 file.createNewFile();
127 }
128
129 //文件輸出流
130 FileOutputStream out = new FileOutputStream(file);
131
132 //設置輸入源
133 StreamResult xmlResult = new StreamResult(out);
134
135 //輸出xml文件
136 transformer.transform(domSource, xmlResult);
137
138 //測試文件輸出的路徑
139 System.out.println(file.getAbsolutePath());
140
141 } catch (ParserConfigurationException e) {
142
143 e.printStackTrace();
144 } catch (TransformerConfigurationException e) {
145
146 e.printStackTrace();
147 } catch (FileNotFoundException e) {
148
149 e.printStackTrace();
150 } catch (TransformerException e) {
151
152 e.printStackTrace();
153 } catch (IOException e) {
154
155 e.printStackTrace();
156
157 }finally{
158
159 }
160
161 }
162 }
163
運行的打印地址:
D:\MyEclipse 6.0\workspace\WriteAndReadXML\北京到長沙火車時刻表.xml
將上面的地址放到(IE)地址欄顯示的效果圖下:
Life,simple and happy!