Map map=new HashMap();public void InitMap() {
  Digester digester = new Digester();
  digester.push(this);
  digester.addCallMethod("mvc-config/action", "addaction", 2);
  digester.addCallParam("mvc-config/action/name", 0);
  digester.addCallParam("mvc-config/action/classs", 1);  try {
   digester.parse("mvc-config.xml");
  } catch (IOException e) {
     e.printStackTrace();
  } catch (SAXException e) {
    e.printStackTrace();
  }
 }
public void addaction(String name, String classs) {  
 map.put(name,classs);
 }mvc-config.xml 文件为:<?xml version="1.0"?>
<mvc-config>
<action name="login" class="com.weijin.crm.actiom.LoginActiom"></action>
<action name="loginout" class="com.weijin.crm.actiom.LoginOutActiom"></action>
...... 这里就不写那么多了,就是有很多
</mvc-config>大体是这样的 不在自己电脑上 记下来的,
我现在能读到mvc-config.xml文件的内容 但是map里总是只有一条信息, 这是为什么? 望赐教

解决方案 »

  1.   


    Map map=new HashMap();public void InitMap() {
      Digester digester = new Digester();
      digester.push(this);
      digester.addCallMethod("mvc-config/action", "addaction", 2);
      digester.addCallParam("mvc-config/action/name", 0);
      digester.addCallParam("mvc-config/action/classs", 1);  try {
       digester.parse("mvc-config.xml");
      } catch (IOException e) {
         e.printStackTrace();
      } catch (SAXException e) {
        e.printStackTrace();
      }
     }
    public void addaction(String name, String classs) {  
     map.put(name,classs);
     }
    InitMap()这个方法没用到呀与Map没关系。。
      

  2.   

    有可能是你的Map<key,value> 的key值重复了吧
      

  3.   


    <?xml version="1.0"?>
    <mvc-config>
    <action name="login" class="com.weijin.crm.actiom.LoginActiom"></action>
    <action name="loginout" class="com.weijin.crm.actiom.LoginOutActiom"></action>
    ...... 这里就不写那么多了,就是有很多
    </mvc-config>这里面得可以只都不一样
    Digester 读取XML文件感觉没循环一样
    是这种意思
      

  4.   

      尤其那个digester类。。
      

  5.   

    web.xml<servlet>
    <description></description>
    <servlet-name>ActionServlet</servlet-name>
    <servlet-class>
    com.weijin.apms.core.action.ActionServlet
    </servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>WEB-INF\mvcConfig.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>ActionServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>ActionServlet.java  extends HttpServlet,  重写init()方法public void init() throws ServletException {
    MvcConfig  config=MvcConfig.getConfig();
    super.init();
    // getServlet().getServletContext().getRealPath("/")
    String webpath = this.getServletContext().getRealPath("/");
    String configpath = this.getInitParameter("config");
    System.out.println(new java.io.File(webpath + configpath).isFile() );
    config.run(webpath + configpath);
    }MvcConfig.java
    public class MvcConfig {
    private static MvcConfig config;
    private Map<String, String> map = new HashMap<String, String>();
    private MvcConfig() {
    }
    public static MvcConfig getConfig() {
    if (config == null) {
    config = new MvcConfig();
    }
    return config;
    }
    public Map<String, String> getMap() {
    return map;
    }
    public void run(String path) {
    //就是这个地方没有读取全部mvc-config.xml中信息 map中只有一条信息
    Digester dig = new Digester();
    dig.push(this);
    dig.addCallMethod("mvc-config/action-mappings", "addAction", 2);
    dig.addCallParam("mvc-config/action-mappings/action/path", 0);
    dig.addCallParam("mvc-config/action-mappings/action/name", 1);
    try {
    dig.parse(path);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public void addAction(String path, String name) {
    System.out.println("add Action");
    map.put(path, name);
    }
    }mvc-config.xml
    <mvc-config>
    <action-mappings>
    <!-- 登陆管理 -->
    <action path="login"  name="com.softeem.apms.login.action.LoginAction"> </action>
    <action path="out"  name="com.softeem.apms.login.action.OutAction"> </action>
    <action path="randomcode"  name="com.softeem.apms.login.action.RandomCode"> </action>
    ........
    </action-mappings>
    </mvc-config>
      

  6.   


    dig.push(this);
            dig.addCallMethod("mvc-config/action-mappings", "addAction", 2);
            dig.addCallParam("mvc-config/action-mappings/action/path", 0);
            dig.addCallParam("mvc-config/action-mappings/action/name", 1);
            try {
                dig.parse(path); 
       后面加上Collections.sort(map); //Collections为Java集合对象
    参考:http://www.cnblogs.com/bjzhanghao/archive/2005/03/25/125747.html