dom4j解析XML文件测试

一.什么是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

 

Xml代码 
1.<?xml version="1.0" encoding="UTF-8"?>  
2.  
3.<classinfo>  
4.  
5.<classname>cn.zld.testdom.StudentInfo</classname>  
6.  
7.<element>  
8.    <methodname>setStName</methodname>  
9.    <value>张立冬</value>  
10.</element>  
11.  
12.<element>  
13.    <methodname>setStNumber</methodname>  
14.    <value>20080810</value>  
15.</element>  
16.  
17.<element>  
18.    <methodname>setAge</methodname>  
19.    <value>20</value>  
20.</element>  
21.  
22.</classinfo>  
<?xml version="1.0" encoding="UTF-8"?>

<classinfo>

<classname>cn.zld.testdom.StudentInfo</classname>

<element>
	<methodname>setStName</methodname>
	<value>张立冬</value>
</element>

<element>
	<methodname>setStNumber</methodname>
	<value>20080810</value>
</element>

<element>
	<methodname>setAge</methodname>
	<value>20</value>
</element>

</classinfo> 建立StduentInfo类文件

Java代码 
1.package cn.zld.testdom;   
2.  
3./**  
4. * 学生信息类  
5. * @author 张立冬  
6. *  
7. */  
8.public class StudentInfo {   
9.  
10.    private String stName;   //学生名字   
11.    private String stNumber; //学生学号   
12.    private String Age;      //学生年龄   
13.  
14.    public String toString(){   
15.        return "学生名字:"+this.getStName()+"  学生学号:"+this.getStNumber()+"  学生年龄:"+this.getAge();   
16.    }   
17.  
18.    //getter & setter 方法   
19.    public String getStName() {   
20.        return stName;   
21.    }   
22.  
23.    public void setStName(String stName) {   
24.        this.stName = stName;   
25.    }   
26.  
27.    public String getStNumber() {   
28.        return stNumber;   
29.    }   
30.  
31.    public void setStNumber(String stNumber) {   
32.        this.stNumber = stNumber;   
33.    }   
34.  
35.    public String getAge() {   
36.        return Age;   
37.    }   
38.  
39.    public void setAge(String age) {   
40.        Age = age;   
41.    }   
42.  
43.}  
package cn.zld.testdom;

/**
 * 学生信息类
 * @author 张立冬
 *
 */
public class StudentInfo {

	private String stName;   //学生名字
	private String stNumber; //学生学号
	private String Age;      //学生年龄

	public String toString(){
		return "学生名字:"+this.getStName()+"  学生学号:"+this.getStNumber()+"  学生年龄:"+this.getAge();
	}

	//getter & setter 方法
	public String getStName() {
		return stName;
	}

	public void setStName(String stName) {
		this.stName = stName;
	}

	public String getStNumber() {
		return stNumber;
	}

	public void setStNumber(String stNumber) {
		this.stNumber = stNumber;
	}

	public String getAge() {
		return Age;
	}

	public void setAge(String age) {
		Age = age;
	}

}
 测试主类Test

Java代码 
1.package cn.zld.testdom;   
2.  
3.import java.lang.reflect.InvocationTargetException;   
4.import java.lang.reflect.Method;   
5.import org.dom4j.DocumentException;   
6.  
7./**  
8. * dom4j使用测试  
9. * @author 张立冬  
10. *  
11. */  
12.public class Test {   
13.  
14.        public static void main(String args[]){   
15.            try{   
16.                Test te=new Test();   
17.                te.readXML();   
18.            }catch(Exception e){   
19.                e.printStackTrace();   
20.            }   
21.        }   
22.  
23.  
24.        /**  
25.         * 读取XML文件  
26.         */  
27.        public void readXML(){   
28.            //创建文件对象   
29.            java.io.File file=new java.io.File("studentinfo.xml");   
30.            if(file.exists()){   
31.                try{   
32.                //创建一个读取XML文件的对象   
33.                org.dom4j.io.SAXReader reader=new org.dom4j.io.SAXReader();   
34.                //创建一个文档对象   
35.                org.dom4j.Document document=reader.read(file);   
36.                //获取文件的根节点   
37.                org.dom4j.Element element=document.getRootElement();   
38.                System.out.println("得到根节点标签名:"+element.getName());   
39.                System.out.println("得到类名:"+element.elementText("classname"));   
40.                //根据得到的对象名创建对象   
41.                Class c=Class.forName(element.elementText("classname"));   
42.                Object obj=c.newInstance();   
43.                //获取该对象的所有方法   
44.                Method[] me=obj.getClass().getMethods();   
45.  
46.                //循环获取该对象的属性   
47.                for(java.util.Iterator i=element.elementIterator("element");i.hasNext();){   
48.                    //获取节点元素   
49.                    element=(org.dom4j.Element)i.next();   
50.                    String methodname=element.elementText("methodname");   
51.                    String value=element.elementText("value");   
52.                    for(Method m:me){   
53.                        if(m.getName().equals(methodname)){   
54.                            //若得到的方法名一致则调用该方法   
55.                            m.invoke(obj,value);   
56.                            break;   
57.                        }   
58.                    }   
59.                }   
60.                System.out.println(obj);   
61.                }   
62.                catch(Exception e){   
63.                    e.printStackTrace();   
64.                }   
65.  
66.            }   
67.            else{   
68.                System.out.println("XML文件不存在!");   
69.            }   
70.        }   
71.}  

你可能感兴趣的:(xml,软件测试,IBM)