- 根据不同的节点建不同的类
- 如果有多个相同的子节点可以用集合
- 如果想设置为唯一的话,可以根据map集合的特点:键位不可重复
- 根据堆栈方式进行添加与查询
private static final String DEFAULT_PATH = "/config.xml";
private ConfigModelFactory() {
}
public static ConfigModel createConfig() {
return createConfig(DEFAULT_PATH);
}
public static ConfigModel createConfig(String xmlpath) {
ConfigModel configModel = new ConfigModel();
InputStream is = ConfigModelFactory.class.getResourceAsStream(xmlpath);
SAXReader sax = new SAXReader();
try {
Document read = sax.read(is);
List<Element> selectNodes = read.selectNodes("/config/action");
for (Element e : selectNodes) {
ActionModel actionModel=new ActionModel();
String path = e.attributeValue("path");
String type = e.attributeValue("type");
actionModel.setPath(path);
actionModel.setType(type);
List<Element> selectNodes2 = e.selectNodes("forward");
for (Element w : selectNodes2) {
ForwardModel forwardModel=new ForwardModel();
String name = w.attributeValue("name");
String forwardopath = w.attributeValue("path");
String redirect = w.attributeValue("redirect");
forwardModel.setName(name);
forwardModel.setPath(forwardopath);
forwardModel.setRedirect(Boolean.parseBoolean(redirect));
actionModel.push(forwardModel);
}
configModel.push(actionModel);
}
} catch (DocumentException e) {
e.printStackTrace();
}
return configModel;
}