利用simpleframework解析xml

来源:互联网 发布:景茗网络是啥 编辑:程序博客网 时间:2024/06/10 16:13

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 {@Elementprivate String url;@Elementprivate String databasename;@Attributeprivate String username;@Attributeprivate String userpassword;
//getter and setter}

package com.litb.bida.test.xmlSerializer;import org.simpleframework.xml.Element;public class BeanEnvironment {@Elementprivate BeanSystem fullfilSystem;@Elementprivate BeanSystem procurementSystem;@Elementprivate BeanSystem wmsSystem;@Elementprivate String dblocation;@Elementprivate String dbusername;@Elementprivate String dbpassword;
//getter and setter
}

public class BeanCfg {@Elementprivate 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文件比较耗时,则不太合适这种方法。