dom4j解析xml文件(转:从一位美女)

dom4j解析XML文件测试
文章分类:Java编程
一.什么是dom4j

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。

二.何为XML文件

  XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

三.dom4j解析XML文件测试

首先我们建立一个XML文件如下所示

studentinfo.xml



Java代码

1. Xml代码
2. 1.<?xml version="1.0" encoding="UTF-8"?>
3. 2.
4. 3.<classinfo>
5. 4.
6. 5.<classname>cn.zld.testdom.StudentInfo</classname>
7. 6.
8. 7.<element>
9. 8. <methodname>setStName</methodname>
10. 9. <value>张立冬</value>
11. 10.</element>
12. 11.
13. 12.<element>
14. 13. <methodname>setStNumber</methodname>
15. 14. <value>20080810</value>
16. 15.</element>
17. 16.
18. 17.<element>
19. 18. <methodname>setAge</methodname>
20. 19. <value>20</value>
21. 20.</element>
22. 21.
23. 22.</classinfo>
24. <?xml version="1.0" encoding="UTF-8"?>
25.
26. <classinfo>
27.
28. <classname>cn.zld.testdom.StudentInfo</classname>
29.
30. <element>
31. <methodname>setStName</methodname>
32. <value>张立冬</value>
33. </element>
34.
35. <element>
36. <methodname>setStNumber</methodname>
37. <value>20080810</value>
38. </element>
39.
40. <element>
41. <methodname>setAge</methodname>
42. <value>20</value>
43. </element>
44.
45. </classinfo> 建立StduentInfo类文件
46.
47. Java代码
48. 1.package cn.zld.testdom;
49. 2.
50. 3./**
51. 4. * 学生信息类
52. 5. * @author 张立冬
53. 6. *
54. 7. */
55. 8.public class StudentInfo {
56. 9.
57. 10. private String stName; //学生名字
58. 11. private String stNumber; //学生学号
59. 12. private String Age; //学生年龄
60. 13.
61. 14. public String toString(){
62. 15. return "学生名字:"+this.getStName()+" 学生学号:"+this.getStNumber()+" 学生年龄:"+this.getAge();
63. 16. }
64. 17.
65. 18. //getter & setter 方法
66. 19. public String getStName() {
67. 20. return stName;
68. 21. }
69. 22.
70. 23. public void setStName(String stName) {
71. 24. this.stName = stName;
72. 25. }
73. 26.
74. 27. public String getStNumber() {
75. 28. return stNumber;
76. 29. }
77. 30.
78. 31. public void setStNumber(String stNumber) {
79. 32. this.stNumber = stNumber;
80. 33. }
81. 34.
82. 35. public String getAge() {
83. 36. return Age;
84. 37. }
85. 38.
86. 39. public void setAge(String age) {
87. 40. Age = age;
88. 41. }
89. 42.
90. 43.}
91. package cn.zld.testdom;
92.
93. /**
94. * 学生信息类
95. * @author 张立冬
96. *
97. */
98. public class StudentInfo {
99.
100. private String stName; //学生名字
101. private String stNumber; //学生学号
102. private String Age; //学生年龄
103.
104. public String toString(){
105. return "学生名字:"+this.getStName()+" 学生学号:"+this.getStNumber()+" 学生年龄:"+this.getAge();
106. }
107.
108. //getter & setter 方法
109. public String getStName() {
110. return stName;
111. }
112.
113. public void setStName(String stName) {
114. this.stName = stName;
115. }
116.
117. public String getStNumber() {
118. return stNumber;
119. }
120.
121. public void setStNumber(String stNumber) {
122. this.stNumber = stNumber;
123. }
124.
125. public String getAge() {
126. return Age;
127. }
128.
129. public void setAge(String age) {
130. Age = age;
131. }
132.
133. }
134. 测试主类Test
135.
136. Java代码
137. 1.package cn.zld.testdom;
138. 2.
139. 3.import java.lang.reflect.InvocationTargetException;
140. 4.import java.lang.reflect.Method;
141. 5.import org.dom4j.DocumentException;
142. 6.
143. 7./**
144. 8. * dom4j使用测试
145. 9. * @author 张立冬
146. 10. *
147. 11. */
148. 12.public class Test {
149. 13.
150. 14. public static void main(String args[]){
151. 15. try{
152. 16. Test te=new Test();
153. 17. te.readXML();
154. 18. }catch(Exception e){
155. 19. e.printStackTrace();
156. 20. }
157. 21. }
158. 22.
159. 23.
160. 24. /**
161. 25. * 读取XML文件
162. 26. */
163. 27. public void readXML(){
164. 28. //创建文件对象
165. 29. java.io.File file=new java.io.File("studentinfo.xml");
166. 30. if(file.exists()){
167. 31. try{
168. 32. //创建一个读取XML文件的对象
169. 33. org.dom4j.io.SAXReader reader=new org.dom4j.io.SAXReader();
170. 34. //创建一个文档对象
171. 35. org.dom4j.Document document=reader.read(file);
172. 36. //获取文件的根节点
173. 37. org.dom4j.Element element=document.getRootElement();
174. 38. System.out.println("得到根节点标签名:"+element.getName());
175. 39. System.out.println("得到类名:"+element.elementText("classname"));
176. 40. //根据得到的对象名创建对象
177. 41. Class c=Class.forName(element.elementText("classname"));
178. 42. Object obj=c.newInstance();
179. 43. //获取该对象的所有方法
180. 44. Method[] me=obj.getClass().getMethods();
181. 45.
182. 46. //循环获取该对象的属性
183. 47. for(java.util.Iterator i=element.elementIterator("element");i.hasNext();){
184. 48. //获取节点元素
185. 49. element=(org.dom4j.Element)i.next();
186. 50. String methodname=element.elementText("methodname");
187. 51. String value=element.elementText("value");
188. 52. for(Method m:me){
189. 53. if(m.getName().equals(methodname)){
190. 54. //若得到的方法名一致则调用该方法
191. 55. m.invoke(obj,value);
192. 56. break;
193. 57. }
194. 58. }
195. 59. }
196. 60. System.out.println(obj);
197. 61. }
198. 62. catch(Exception e){
199. 63. e.printStackTrace();
200. 64. }
201. 65.
202. 66. }
203. 67. else{
204. 68. System.out.println("XML文件不存在!");
205. 69. }
206. 70. }
207. 71.}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值