package com.coderising.litestruts;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 解析XML文件
* ConfigurationManager
* @author greenhills
* 2017年2月27日 下午10:18:10
*/
public class ConfigurationManager {
/**
* 读取xml文件的文档对象
*/
private static Document document;
/**
* 配置文件路径
*/
static String configureFileName="struts.xml";
/**
* 当前类路径
*/
static String currentPath;
static{
currentPath = ConfigurationManager.class.getResource("").getPath().substring(1);
}
static{
try {
SAXReader sax=new SAXReader();
document = sax.read(new File(currentPath+configureFileName));
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 解析配置文件
* ConfigurationManager.java
* @param @return
* @author greenhills
* 2017年2月27日 下午11:28:59
*/
public static Map<String,ActionMapping> loadXml(){
Map<String,ActionMapping> actionMappings=new HashMap<String, ActionMapping>();
Element root=document.getRootElement();
List<Element> actionList= root.elements("action");
for(Element actionElemnt:actionList){
ActionMapping actionMapping=new ActionMapping(
actionElemnt.attributeValue("name"),
actionElemnt.attributeValue("class"),
actionElemnt.attributeValue("method")
);
//获取action下的result节点
List<Element> resultList = actionElemnt.elements("result");
for(Element resultElemnt:resultList){
ResultMapping resultMapping=new ResultMapping(
resultElemnt.attributeValue("name"),
resultElemnt.attributeValue("type"),
resultElemnt.getTextTrim()
);
//保存ResultMapping(以result标签的name为key)
actionMapping.setResultMappings(resultMapping.getName(),resultMapping);
}
//保存ActionMapping(以action标签的name为key)
actionMappings.put(actionMapping.getName(), actionMapping);
}
return actionMappings;
}
}