将下面的xml转换成RequireConfig对象:
<reqConfig id="req20120413000048"> <alipay> <appName to="/home/admin/copywriter">cmscenter</appName> <appName to="/home/admin/copywriter">ecmng</appName> <appName to="/home/admin/copywriter">devcenter</appName> <appName to="/home/admin/copywriter">zpublish</appName> </alipay> <appName to="/home/admin/copywriter">zpublish</appName> </reqConfig>
RequireConfig对象:
/** * created since 2012-4-11 */ package com.alipay.ecmng.biz.shared.model; import java.util.ArrayList; import java.util.List; /** * @author wb-gaoy * @version $Id: RequireConfig.java,v 0.1 2012-4-11 下午7:41:12 wb-gaoy Exp $ */ public class RequireConfig { private String reqId; private AlipayClusterInfo alipayCluster; private List<RequireApplication> requireApps = new ArrayList<RequireApplication>(); public String getReqId() { return reqId; } public void setReqId(String reqId) { this.reqId = reqId; } public List<RequireApplication> getRequireApps() { return requireApps; } public void setRequireApps(List<RequireApplication> requireApps) { this.requireApps = requireApps; } public void addReqApp(RequireApplication reqApp) { requireApps.add(reqApp); } public AlipayClusterInfo getAlipayCluster() { return alipayCluster; } public void setAlipayCluster(AlipayClusterInfo alipayCluster) { this.alipayCluster = alipayCluster; } }
AlipayClusterInfo对象:
/** * created since 2012-4-16 */ package com.alipay.ecmng.biz.shared.model; import java.util.ArrayList; import java.util.List; /** * @author wb-gaoy * @version $Id: AlipayClusterInfo.java,v 0.1 2012-4-16 下午8:48:31 wb-gaoy Exp $ */ public class AlipayClusterInfo { private List<RequireApplication> requireApps = new ArrayList<RequireApplication>(); public List<RequireApplication> getRequireApps() { return requireApps; } public void setRequireApps(List<RequireApplication> requireApps) { this.requireApps = requireApps; } public void addReqApp(RequireApplication reqApp) { requireApps.add(reqApp); } }
RequireApplication对象:
/** * created since 2012-4-11 */ package com.alipay.ecmng.biz.shared.model; /** * @author wb-gaoy * @version $Id: RequireApplication.java,v 0.1 2012-4-11 下午7:47:49 wb-gaoy Exp $ */ public class RequireApplication { private String name; private String targetDir; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTargetDir() { return targetDir; } public void setTargetDir(String targetDir) { this.targetDir = targetDir; } }
将xml解析成对象的主要方法:
public RequireConfig readReqConfigFile(File reqConfigFile) { if (!reqConfigFile.exists()) return null; Digester digester = new Digester(); digester.setValidating(false); digester.addObjectCreate("reqConfig", RequireConfig.class); digester.addSetProperties("reqConfig", "id", "reqId"); digester.addObjectCreate("reqConfig/alipay", AlipayClusterInfo.class); digester.addObjectCreate("reqConfig/alipay/appName", RequireApplication.class); digester.addCallMethod("reqConfig/alipay/appName", "setName", 0); digester.addSetProperties("reqConfig/alipay/appName", "to", "targetDir"); digester.addSetNext("reqConfig/alipay/appName", "addReqApp", "com.alipay.ecmng.biz.shared.model.RequireApplication"); digester.addSetNext("reqConfig/alipay", "setAlipayCluster"); digester.addObjectCreate("reqConfig/appName", RequireApplication.class); digester.addCallMethod("reqConfig/appName", "setName", 0); digester.addSetProperties("reqConfig/appName", "to", "targetDir"); digester.addSetNext("reqConfig/appName", "addReqApp", "com.alipay.ecmng.biz.shared.model.RequireApplication"); try { return (RequireConfig) digester.parse(reqConfigFile); } catch (IOException e) { errorMessage.set(e.getMessage()); } catch (SAXException e) { errorMessage.set(e.getMessage()); } }
O!!