将下面的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!!