??xml version="1.0" encoding="utf-8" standalone="yes"?>
2
3 //IO异常处理相关c?/span>
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
7
8 //JDOM处理相关c?/span>
9 import org.jdom.Document;
10 import org.jdom.Element;
11 import org.jdom.JDOMException;
12 import org.jdom.input.SAXBuilder;
13
14 //单元试c?/span>
15 import junit.framework.TestCase;
16
17 /**
18 * JDOM修改XML中指定节点的内容
19 * @author Zhou-Jingxian
20 *
21 */
22 public class TestUpdateXML extends TestCase {
23
24 public void testJdomUpdateXML(){
25
26 //要解析的文g
27 String xmlURL = "F:\\test_update.xml";
28
29 //指定修改的第二节点名称
30 String secondNodeName = "file_download_url";
31
32 //文对象
33 Document myDoc = null;
34
35 try{
36 //解析?/span>
37 SAXBuilder sb = new SAXBuilder();
38
39 //文赋?/span>
40 myDoc = sb.build(new FileInputStream(xmlURL));
41
42 }catch(JDOMException e){
43 e.printStackTrace();
44 }catch(NullPointerException e){
45 e.printStackTrace();
46 } catch (FileNotFoundException e) {
47 e.printStackTrace();
48 } catch (IOException e) {
49 e.printStackTrace();
50 }
51
52 //根元?/span>
53 Element root = myDoc.getRootElement();
54
55 //W一U节?/span>
56 Element page = root.getChild("page");
57
58 //试用的指定节点修改前原内容
59 String secondNodeValue = page.getChild(secondNodeName).getText();
60 System.out.println("before update value:"+secondNodeValue);
61
62 //修改内容
63 page.getChild(secondNodeName).setText("http://localhost:8000/yyoa/download/");
64
65 //试用的指定节点修改后的内容
66 secondNodeValue = page.getChild(secondNodeName).getText();
67 System.out.println("after update value:"+secondNodeValue);
68
69 }
70
71 /**
72 * F:\\test_update.xml内容如下Q?br />
73 * <?xml version="1.0" encoding="UTF-8"?>
74 * <MobileNet>
75 * <page name="试?>
76 * <method>get</method>
77 * <display>content</display>
78 * <file_url>通过参数传递过来的一个连接地址Q附件所在页面的地址</file_url>
79 * <file_download_url>先不讄Q通过正则解析处理之后得到最后的下蝲地址之后才设|进来?lt;/file_download_url>
80 * <file_analysis_formula>onclick="downloadFile\('([^']*)','([^']*)','([^']*)','([^']*)'\)"</file_analysis_formula>
81 * </page>
82 * </MobileNet>
83 */
84 }
85
86
输出l果Q?br />
3
]]>
2
3 //文gc?/span>
4 import java.io.File;
5
6 //文g输出c?/span>
7 import java.io.FileOutputStream;
8
9 //负责解析的类
10 import javax.xml.parsers.DocumentBuilder;
11 import javax.xml.parsers.DocumentBuilderFactory;
12 //映射c?/span>
13 import javax.xml.transform.Transformer;
14 import javax.xml.transform.TransformerFactory;
15
16 //xml映射输入和输出类
17 import javax.xml.transform.dom.DOMSource;
18 import javax.xml.transform.stream.StreamResult;
19
20 //节点c?/span>
21 import org.w3c.dom.Document;
22 import org.w3c.dom.Element;
23
24 /**
25 * @description 使用DOM创徏单的XML
26 *
27 * @author Zhou-Jingxian
28 *
29 * @date Jun 19, 2009
30 *
31 */
32 public class CreateRuleXML {
33
34 public static void main(String[] args) {
35
36 try{
37 //解析器工厂类
38 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
39
40 //解析?/span>
41 DocumentBuilder builder = factory.newDocumentBuilder();
42
43 //操作的Document对象
44 Document document = builder.newDocument();
45
46 //讄XML的版?/span>
47 document.setXmlVersion("1.0");
48
49 //创徏根节?/span>
50 Element root = document.createElement("MobileNet");
51
52 //根节点d到Document对象?/span>
53 document.appendChild(root);
54
55 /**the first page*/
56 //讄W一个page元素?/span>
57 Element pageElement = document.createElement("page");
58
59 //讄page节点的name属?/span>
60 pageElement.setAttribute("name", "list.jsp");
61
62 /**method*/
63 //讄method节点
64 Element methodElement = document.createElement("method");
65
66 //lmethod讄?/span>
67 methodElement.setTextContent("get");
68
69 //dmethod节点到page节点?/span>
70 pageElement.appendChild(methodElement);
71
72 /**display*/
73 //讄method节点
74 Element displayElement = document.createElement("display");
75
76 //ldisplay讄?/span>
77 displayElement.setTextContent("list");
78
79 //ddisplay节点到page节点?/span>
80 pageElement.appendChild(displayElement);
81
82 /**request_param*/
83 //讄request_param节点
84 Element request_paramElement = document.createElement("request_param");
85
86 //lrequest_param讄?/span>
87 request_paramElement.setTextContent("request_param1|request_param2");
88
89 //drequest_param节点到page节点?/span>
90 pageElement.appendChild(request_paramElement);
91
92 //pageD加人根节点?/span>
93 root.appendChild(pageElement);
94
95
96 /**the second page*/
97 //讄W二个page元素?/span>
98 pageElement = document.createElement("page");
99
100 //讄page节点的name属?/span>
101 pageElement.setAttribute("name", "content.jsp");
102
103 /**method*/
104 //讄method节点
105 methodElement = document.createElement("method");
106
107 //lmethod讄?/span>
108 methodElement.setTextContent("post");
109
110 //dmethod节点到page节点?/span>
111 pageElement.appendChild(methodElement);
112
113 /**display*/
114 //讄method节点
115 displayElement = document.createElement("display");
116
117 //ldisplay讄?/span>
118 displayElement.setTextContent("content");
119
120 //ddisplay节点到page节点?/span>
121 pageElement.appendChild(displayElement);
122
123 /**url_title*/
124 //讄url_title节点
125 Element url_titleElement = document.createElement("url_title");
126
127 //lurl_title讄?/span>
128 url_titleElement.setTextContent("title,publisher,published_calendar");
129
130 //durl_title节点到page节点?/span>
131 pageElement.appendChild(url_titleElement);
132
133 //pageD加人根节点?/span>
134 root.appendChild(pageElement);
135
136
137 //开始把Document映射到文?/span>
138 TransformerFactory transFactory = TransformerFactory.newInstance();
139 Transformer transFormer = transFactory.newTransformer();
140
141 //讄输出l果
142 DOMSource domSource = new DOMSource(document);
143
144 //生成xml文g
145 File file = new File("MobileNetRule.xml");
146
147 //判断是否存在,如果不存?则创?/span>
148 if(!file.exists()){
149 file.createNewFile();
150 }
151
152 //文g输出?/span>
153 FileOutputStream out = new FileOutputStream(file);
154
155 //讄输入?/span>
156 StreamResult xmlResult = new StreamResult(out);
157
158 //输出xml文g
159 transFormer.transform(domSource, xmlResult);
160
161 //试文g输出的\?/span>
162 System.out.println(file.getAbsolutePath());
163
164 }catch(Exception e){
165 e.printStackTrace();
166
167 }finally{
168
169 }
170 }
171
172 }
173
q行打印的地址:
D:\MyEclipse 6.0\workspace\WriteAndReadXML\MobileNetRule.xml
上面的地址输入?IE)地址?得到如下截图:
]]>
2
3 //文gc?/span>
4 import java.io.File;
5
6 //负责解析的类
7 import javax.xml.parsers.DocumentBuilder;
8 import javax.xml.parsers.DocumentBuilderFactory;
9
10 //节点c?/span>
11 import org.w3c.dom.Document;
12 import org.w3c.dom.NodeList;
13
14 /**
15 * @description 解析"北京到长沙的单列车时刻表"信息
16 *
17 * @author Zhou-Jingxian
18 *
19 * @date Jun 18, 2009
20 *
21 */
22 public class ParserXML {
23
24 public static void main(String[] args) {
25
26 try{
27 //需要解析的文g
28 File file = new File("北京到长沙火车时刻表.xml");
29
30 //解析器工厂类
31 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
32
33 //解析?/span>
34 DocumentBuilder builder = factory.newDocumentBuilder();
35
36 //操作的Document对象
37 Document document = builder.parse(file);
38
39 //节点名称
40 NodeList nodelist = document.getElementsByTagName("车次");
41
42 //解析内容
43 for(int i = 0; i<nodelist.getLength(); i++){
44 System.out.println("--------"+(i+1)+"---------");
45 System.out.println("车类?"+document.getElementsByTagName("车次").item(i).getAttributes().getNamedItem("cd").getNodeValue());
46 System.out.println("车次?"+document.getElementsByTagName("名字").item(i).getFirstChild().getNodeValue());
47 System.out.println("开车时?"+document.getElementsByTagName("开车时?/span>").item(i).getFirstChild().getNodeValue());
48
49 }
50 }catch(Exception e){
51 e.printStackTrace();
52
53 }finally{
54
55 }
56 }
57 }
58
q行l果如下:
]]>