采用apache的commons.digester包对XML文件进行简单映射解析!
来源:互联网 发布:玉溪广电网络分公司 编辑:程序博客网 时间:2024/06/05 18:22
用Xstream也可以实现类似的功能,但XStream对标签属性的解析比较麻烦,用apache的commons.digester就方便多了,举例如下:
用之前要先包含如下几个包:
commons-digester.jar
要解析的xml文件如下(server.xml):
<?xml version="1.0" encoding="gb2312"?><config> <database-server supply="MYSQL" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/aws?characterEncoding=gb2312" username="root" password="password" debug="on" /> <diy diy.parameter1="" diy.parameter2="22" diy.parameter3="" diy.parameter4="" diy.parameter5="" diy.parameter6="" diy.parameter7="" diy.parameter8="" /> <optimize max.client="500" thread.overtime="1200000" database.max.session="200000" database.pool.init="5" database.pool.max.workload="30000" /> <log runtime.server="on" runtime.filename="../logs/access.log" error.filename="../logs/error.log" /> <plus-httpd supply="jboss" server.root="../webserver/webapps/portal/" security.code="AH{%C1%F5%BD%F0%D6%F9}" /></config>
解析代码:
File localFile = new File("system.xml"); Digester localDigester; (localDigester = new Digester()).setValidating(false); localDigester.addObjectCreate("config", AWFConfig.class); localDigester.addObjectCreate("config/database-server", DataBaseServerConf.class); localDigester.addSetProperties("config/database-server", "supply", "supply"); localDigester.addSetProperties("config/database-server", "driver", "driver"); localDigester.addSetProperties("config/database-server", "url", "url"); localDigester.addSetProperties("config/database-server", "username", "userName"); localDigester.addSetProperties("config/database-server", "password", "password"); localDigester.addSetProperties("config/database-server", "debug", "debug"); localDigester.addSetNext("config/database-server", "setDataBaseServerConf"); localDigester.addObjectCreate("config/schedule", ScheduleConf.class); localDigester.addSetProperties("config/schedule", "task.cost", "taskCost"); localDigester.addSetProperties("config/schedule", "plan.service", "planService"); localDigester.addSetNext("config/schedule", "setScheduleConf"); localDigester.addObjectCreate("config/diy", DIYConf.class); localDigester.addSetProperties("config/diy", "diy.parameter1", "diyParameter1"); localDigester.addSetProperties("config/diy", "diy.parameter2", "diyParameter2"); localDigester.addSetProperties("config/diy", "diy.parameter3", "diyParameter3"); localDigester.addSetProperties("config/diy", "diy.parameter4", "diyParameter4"); localDigester.addSetProperties("config/diy", "diy.parameter5", "diyParameter5"); localDigester.addSetProperties("config/diy", "diy.parameter6", "diyParameter6"); localDigester.addSetProperties("config/diy", "diy.parameter7", "diyParameter7"); localDigester.addSetProperties("config/diy", "diy.parameter8", "diyParameter8"); localDigester.addSetNext("config/diy", "setDIYConf"); localDigester.addObjectCreate("config/optimize", OptimizeConf.class); localDigester.addSetProperties("config/optimize", "max.client", "maxClient"); localDigester.addSetProperties("config/optimize", "thread.overtime", "threadOvertime"); localDigester.addSetProperties("config/optimize", "database.max.session", "maxSession"); localDigester.addSetProperties("config/optimize", "database.pool.init", "databasePoolInit"); localDigester.addSetProperties("config/optimize", "database.pool.max.workload", "databasePoolMaxWorkload"); localDigester.addSetNext("config/optimize", "setOptimizeConf"); localDigester.addObjectCreate("config/log", LogConf.class); localDigester.addSetProperties("config/log", "runtime.server", "runtimeServer"); localDigester.addSetNext("config/log", "setLogConf"); localDigester.addObjectCreate("config/plus-httpd", HttpDConf.class); localDigester.addSetProperties("config/plus-httpd", "supply", "supply"); localDigester.addSetProperties("config/plus-httpd", "server.root", "serverRoot"); localDigester.addSetProperties("config/plus-httpd", "security.code", "securityCode"); localDigester.addSetNext("config/plus-httpd", "setHttpDConf"); try { return (AWFConfig) localDigester.parse(new FileInputStream(localFile)); } catch (SAXException localSAXException) { throw new ConfigParserException(localSAXException.toString()); } catch (IOException localIOException) { throw new ConfigParserException(localIOException.toString()); }
映射类AWFConfig:
public class AWFConfig extends Config { public static AWFServerConf _awfServerConf; public static DataBaseServerConf _databaseServerConf; public static OptimizeConf _optimizeConf; public static LogConf _logConf; public static ScheduleConf _scheduleConf; public static HttpDConf _httpdConf; public static DIYConf _diyConf; private AWFServerConf awfServerConf; private DataBaseServerConf dataBaseServerConf; private OptimizeConf optimizeConf; private LogConf logConf; private ScheduleConf scheduleConf; private DIYConf diyConf; private HttpDConf httpDConf; public AWFServerConf getAWFServerConf() { return this.awfServerConf; } public DIYConf getDIYConf() { return this.diyConf; } public DataBaseServerConf getDataBaseServerConf() { return this.dataBaseServerConf; } public HttpDConf getHttpDConf() { return this.httpDConf; } public LogConf getLogConf() { return this.logConf; } public OptimizeConf getOptimizeConf() { return this.optimizeConf; } public ScheduleConf getScheduleConf() { return this.scheduleConf; } public void setAWFServerConf(AWFServerConf paramAWFServerConf) { this.awfServerConf = paramAWFServerConf; } public void setDIYConf(DIYConf paramDIYConf) { this.diyConf = paramDIYConf; } public void setDataBaseServerConf(DataBaseServerConf paramDataBaseServerConf) { this.dataBaseServerConf = paramDataBaseServerConf; } public void setHttpDConf(HttpDConf paramHttpDConf) { this.httpDConf = paramHttpDConf; } public void setLogConf(LogConf paramLogConf) { this.logConf = paramLogConf; } public void setOptimizeConf(OptimizeConf paramOptimizeConf) { this.optimizeConf = paramOptimizeConf; } public void setScheduleConf(ScheduleConf paramScheduleConf) { this.scheduleConf = paramScheduleConf; }}
- 采用apache的commons.digester包对XML文件进行简单映射解析!
- Apache Commons - Digester XML
- commons-digester解析xml
- 使用Digester解析XML文件和JAVA对象的映射
- 使用Digester解析XML文件简单范例
- 用Apache commons-net 包对服务器上的文件进行先重写后删除操作
- Digester解析xml文件
- Digester 解析XML文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析xml文件
- Digester解析XML文件
- 数据结构复习笔记(递归先序遍历)
- 拷贝构造函数被调用的时机
- Windows Phone 使用FlurrySdk
- python 网络编程测试-host应答
- Git详解之二 Git基础
- 采用apache的commons.digester包对XML文件进行简单映射解析!
- pimpl
- HTML5将改变互联网的方方面面
- 禁止程序运行
- extjs构造store 实例
- C++ vector详细用法
- POJ-1797(dijstra变形)(Heavy Transportation)
- ExtJs之Ext.data.Store
- MySQL数据读取,ExtJS和PHP Json