一.XML 解析
1.在Java中的配置文件有四类:
*.xml
*.properties
*.ini
*.yaml public void put (ForwardModel forwardModel){ this.Fw.put(forwardModel.getName(),forwardModel); } public ForwardModel get (String name){ return this.Fw.get(name); } }
开始解析建模:
load .......
public class ConfigModelFactory {
//配置文件默认路径
public static final String DEFAULT_PATH ="/config.xml";
public static ConfigModel createConfigmodel(String path){
//获得文件io流
InputStream inputStream = ConfigModelFactory.class.getResourceAsStream(path);
//创建读取器对象Sax
SAXReader saxReader = new SAXReader();
String actionpath = null;
String actiontype = null;
ActionModel actionModel=null;
String forwardname=null;
String forwardpath=null;
String forwardredirect=null;
ForwardModel forwardModel = null;
ConfigModel configModel=new ConfigModel();
try {
//创建配置文件,生成document对象
Document document = saxReader.read(inputStream);
//开始解析
List actionnodes = document.selectNodes("/config/action");
for (Node actionnode : actionnodes) {
//对象转换
Element actionelment =(Element) actionnode;
actionpath = actionelment.attributeValue("path");
actiontype = actionelment.attributeValue("type");
actionModel=new ActionModel();
//将属性赋入对象
actionModel.setPath(actionpath);
actionModel.setType(actiontype);
//获取该action下的forward标签
List forwardnodes = actionnode.selectNodes("forward");
//遍历forword标签 转换对象
for (Node forwardnode : forwardnodes) {
Element forwardelment = (Element) forwardnode;
forwardname = forwardelment.attributeValue("name");
forwardpath = forwardelment.attributeValue("path");
forwardredirect = forwardelment.attributeValue("redirect");
//实例化forwardmodel对象
forwardModel =new ForwardModel();
//将属性赋入对象
forwardModel.setName(forwardname);
forwardModel.setPath(forwardpath);
forwardModel.setRedirect(Boolean.parseBoolean(forwardredirect));
//将forwardmodel对象放入action对象集合
actionModel.put(forwardModel);
}
configModel.put(actionModel);
}
return configModel;
} catch (DocumentException e) {
throw new RuntimeException(e);
}
}
public static ConfigModel createConfigmodel(){
return createConfigmodel(DEFAULT_PATH);
}
在写一个main方法测试
public static void main(String[] args) {
ConfigModel configmodel = createConfigmodel();
ActionModel actionModel = configmodel.get("/regAction");
System.out.println(actionModel);
}
结果:
ActionModel{path='/regAction', type='test.RegAction', Fw={success=ForwardModel{name='success', path='/login.jsp', redirect=true}, failed=ForwardModel{name='failed', path='/reg.jsp', redirect=false}}}
没毛病。。。



