digester 读XML文件问题

「已注销」 2010-01-06 05:17:29

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里总是只有一条信息, 这是为什么? 望赐教
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TzSword 2010-01-08
  • 打赏
  • 举报
回复

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
「已注销」 2010-01-08
  • 打赏
  • 举报
回复
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>
TzSword 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 weijing_007 的回复:]
引用 7 楼 tzsword 的回复:
哪里得帖一下你的处理过程喽。。。。。。
  无代码无真相~~~~~

好的我前发的是我自己记得的
下次再代码贴上
[/Quote]
尤其那个digester类。。。。。
「已注销」 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tzsword 的回复:]
哪里得帖一下你的处理过程喽。。。。。。
  无代码无真相~~~~~
[/Quote]
好的我前发的是我自己记得的
下次再代码贴上
TzSword 2010-01-07
  • 打赏
  • 举报
回复
哪里得帖一下你的处理过程喽。。。。。。
无代码无真相~~~~~
「已注销」 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 weijing_007 的回复:]
这个方法已经用到了 只是没写出来


[/Quote]

<?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文件感觉没循环一样
是这种意思

TzSword 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 weijing_007 的回复:]
这个方法已经用到了 只是没写出来
我现在能读到mvc-config.xml文件的内容 但是map里总是只有一条信息, 这是为什么? 望赐教
[/Quote]
有可能是你的Map<key,value> 的key值重复了吧。。。
「已注销」 2010-01-07
  • 打赏
  • 举报
回复
这个方法已经用到了 只是没写出来

licao88 2010-01-06
  • 打赏
  • 举报
回复
同意1楼
阿_布 2010-01-06
  • 打赏
  • 举报
回复
对呀!没看见你调用方法啊!
TzSword 2010-01-06
  • 打赏
  • 举报
回复

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没关系。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧