1.按照xml编写对应的bean文件
类似于树的先根遍历,从最深一层的元素开始创建对应的bean类,用@Element标识元素,@Attribute标识元素属性。除root元素、最深一层元素,其他层元素对应的bean类都需将其子元素的bean作为属性引入。对于下面的xml文档:
<configManager>
<testEnvCofig>
<fullfilSystem username="auto-test" userpassword="auto1nthebox">
<url>http://172.16.0.160:8080/v3center/login1.jsp</url>
<databasename>products_center_v1</databasename>
</fullfilSystem>
<procurementSystem username="auto-test" userpassword="auto1nthebox">
<url>http://172.16.0.161:8080/v3center/login1.jsp</url>
<databasename>products_center_v1</databasename>
</procurementSystem>
<wmsSystem username="zhangfei" userpassword="wms">
<url>http://172.16.0.162:8080/login_input.do</url>
<databasename>wms</databasename>
</wmsSystem>
<dblocation>172.16.0.166</dblocation>
<dbusername>db_admin</dbusername>
<dbpassword>light2902</dbpassword>
</testEnvCofig>
</configManager>
对应的bean文件依次为
public class BeanSystem {
@Element
private String url;
@Element
private String databasename;
@Attribute
private String username;
@Attribute
private String userpassword;
//getter and setter
}
package com.litb.bida.test.xmlSerializer;
import org.simpleframework.xml.Element;
public class BeanEnvironment {
@Element
private BeanSystem fullfilSystem;
@Element
private BeanSystem procurementSystem;
@Element
private BeanSystem wmsSystem;
@Element
private String dblocation;
@Element
private String dbusername;
@Element
private String dbpassword;
//getter and setter
}
public class BeanCfg {
@Element
private BeanEnvironment testEnvCofig;
//getter and setter
}
需要注意的时Bean类的属性值名称必须与xml文档中的元素及属性值一致。
2.读取xml内容
File file = new File("testconfig.xml");
BeanCfg cfg = new BeanCfg();
Serializer ser = new Persister();
ser.read(cfg,file);
即可从cfg开始获取各个层级的元素及属性
对于格式比较简单,起没有重复元素的xml,可以采用simpleframework来解析,对于文件比较大,且重复内容过的的,由于编写对应的bean文件比较耗时,则不太合适这种方法。