package com.coding2017.litestruts;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* Created by kaitao.li on 2017/3/4.
*/
public class StrutsXmlUtil {
public static StrutsDefinition parseResource(InputStream inputStream) {
SAXReader saxReader = new SAXReader();
Document document;
try {
document = saxReader.read(inputStream);
} catch (DocumentException e) {
throw new RuntimeException("解析xml出错");
}
// 获取根节点对象
Element rootElement = document.getRootElement();
StrutsDefinition strutsDefinition = new StrutsDefinition();
Iterator<Element> actionIterator = rootElement.elements("action").iterator();
List<StrutsDefinition.ActionDefinition> actionDefinitions = new ArrayList<StrutsDefinition.ActionDefinition>();
strutsDefinition.setActionDefinitionList(actionDefinitions);
while (actionIterator.hasNext()) {
Element actionElement = actionIterator.next();
StrutsDefinition.ActionDefinition actionDefinition = new StrutsDefinition.ActionDefinition();
actionDefinition.setName(actionElement.attributeValue("name"));
actionDefinition.setClazz(actionElement.attributeValue("class"));
actionDefinitions.add(actionDefinition);
Iterator<Element> resultIterator = actionElement.elements("result").iterator();
List<StrutsDefinition.ResultDefinition> resultDefinitions = new ArrayList<StrutsDefinition.ResultDefinition>();
actionDefinition.setResultDefinitions(resultDefinitions);
while (resultIterator.hasNext()) {
Element resultElement = resultIterator.next();
StrutsDefinition.ResultDefinition resultDefinition = new StrutsDefinition.ResultDefinition();
resultDefinition.setName(resultElement.attributeValue("name"));
resultDefinition.setValue(resultElement.getTextTrim());
resultDefinitions.add(resultDefinition);
}
}
return strutsDefinition;
}
public static void main(String[] args) {
StrutsXmlUtil.parseResource(StrutsXmlUtil.class.getResourceAsStream("/struts.xml"));
}
}