package com.struts; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * DOM方式解析xml */ public class DomXmlHelper { private Map<String, String> kv = new HashMap<String, String>(); public DomXmlHelper () throws DocumentException { fetchAttributes(); } // 遍历当前节点下的所有节点 private void listNodes(Element node, String loop, Map<String, String> kv) { // System.out.println("当前节点的名称:" + node.getName()); if (loop.equals("")) { loop += node.getName(); } else { kv.put(loop, node.getName()); loop += "-" + node.getName(); } // 首先获取当前节点的所有属性节点 List<Attribute> list = node.attributes(); // 遍历属性节点 for (Attribute attribute : list) { // System.out.println("属性 "+attribute.getName() +":" + // attribute.getValue()); kv.put(loop, attribute.getValue()); loop += "-" + attribute.getValue(); // System.out.println("loop: " + loop); } // 如果当前节点内容不为空,则输出 if (!(node.getTextTrim().equals(""))) { // System.out.println("内容 " + node.getName() + ":" + // node.getText()); kv.put(loop, node.getText()); loop += "-" + node.getText(); // System.out.println("loop: " + loop); } // 同时迭代当前节点下面的所有子节点 // 使用递归 Iterator<Element> iterator = node.elementIterator(); while (iterator.hasNext()) { Element e = iterator.next(); listNodes(e, loop, kv); } } private void fetchAttributes() throws DocumentException { // 创建SAXReader对象 SAXReader reader = new SAXReader(); // 读取文件 转换成Document Document document = (Document) reader.read(new File( "./src/com/struts/struts.xml")); // 获取根节点元素对象 Element root = ((org.dom4j.Document) document).getRootElement(); listNodes(root, "", kv); for (Map.Entry<String, String> entity : kv.entrySet()) { // System.out.println("key: " + entity.getKey() + " , value: " + // entity.getValue()); } } public String getActionView(String action, String method) { String key = "struts-action-" + action; String className = kv.get(key); key += "-" + className + "-result-" + method; return kv.get(key); } public String getActionClassByName(String action) { String key = "struts-action-" + action; return kv.get(key); } // public static void main(String[] args) throws DocumentException { // DomXmlHelper dm = new DomXmlHelper(); // System.out.println(dm.getActionClassByName("login")); // System.out.println(dm.getActionView("login", "success")); // System.out.println(dm.getActionView("login", "fail")); // // System.out.println(dm.getActionClassByName("logout")); // System.out.println(dm.getActionView("logout", "success")); // System.out.println(dm.getActionView("logout", "error")); // } }