📄 sampledigester.java
字号:
package test.Digester.demo.parse;
import java.io.IOException;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;
/**
* Digester parse解析XML示例程序。
*
* @author Scott
*
*/
public class SampleDigester {
private String configFile = null;
private DigesterModel digesterModel = null;
public void setConfigFile(final String configFile) {
this.configFile = configFile;
}
public void parseFunction() throws IOException, SAXException {
Digester digester = new Digester();
digester.push(this);
digester.setValidating(false);
// 生成本类实例
parseDigesterModel(digester);
// 生成ModelInfo
parseModelInfo(digester);
// 生成ActionMapping实例
parseActionMapping(digester);
digester.addSetNext("digester_module", "printlnFunction");
try {
digester.parse(this.configFile);
} catch (Exception e) {
e.printStackTrace();
}
}
public void parseDigesterModel(Digester digester) throws IOException,
SAXException {
digester.addObjectCreate(Constant.DIGESTER_MODEL, DigesterModel.class);
digester.addSetProperties("defaultName", "default", "defaultName");
digester.addSetNext("digester_module", "setDigesterModel");
}
public void parseModelInfo(Digester digester) throws IOException,
SAXException {
digester
.addObjectCreate("digester_module/module_info", ModelInfo.class);
digester.addCallMethod("digester_module/module_info/description",
"setDescription", 0);
digester.addSetNext("digester_module/module_info", "setModelInfo");
}
public void parseActionMapping(Digester digester) throws IOException,
SAXException {
digester.addObjectCreate("digester_module/action_mappings/action",
ActionMapping.class);
// 获取属性值,并将其存入ActionMapping实例
digester.addSetProperties("digester_module/action_mappings/action",
"name", "name");
digester.addSetProperties("digester_module/action_mappings/action",
"requestPath", "requestPath");
digester.addSetProperties("digester_module/action_mappings/action",
"actionClass", "actionClass");
// 调用SampleDigester的addActionMapping方法
digester.addSetNext("digester_module/action_mappings/action",
"addActionMapping");
}
public DigesterModel getDigesterModel() {
return digesterModel;
}
public void setDigesterModel(DigesterModel digesterModel) {
this.digesterModel = digesterModel;
}
/**
* 添加Action映射。 <p> 本方法仅简单输出了传入的ActionMapping的信息,在具体应用中可将其加入系统Action映射集合中。
*
* @param actionMapping
* Action映射
*/
public void printlnFunction(final DigesterModel digesterModel) {
System.out.println("ModelInfo=" + digesterModel);
System.out.println("name=" + digesterModel.getDefaultName());
System.out.println("description="
+ digesterModel.getModelInfo().getDescription());
System.out
.println("actionName="
+ digesterModel.getActionMapping().get("home")
.getActionClass());
// System.out.println("actionName="+digesterModel.getActionMapping().get(1).getName());
}
public static void main(String[] args) {
SampleDigester sd = new SampleDigester();
sd.setConfigFile("file:E:/WorkSpace/USP/src/module.xml");
try {
sd.parseFunction();
sd = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -