java web中关于修改xml后读取值的问题

java web项目中我用xml文件来存储菜单,菜单如下:


<?xml version="1.0" encoding="gbk"?>
<menus>
<frontmenus>
<menu id=
"1">
<name>首页</name>
<href>index.jsp</href>
<display>1</display>
</menu>
</frontmenus>
</menus>

修改xml中的display值使其可以动态显示

读取xml的类如下:


1. public class Front {
2. public Map<String, String> readXML() {
3. Map<String, String> menus = new LinkedHashMap<String, String>();
4. SAXBuilder builder = new SAXBuilder();
5. InputStream in=null;
6. try {
7. //第一种方式 Resource resource=new ClassPathResource("menus.xml");
8.
// in=resource.getInputStream();
9.
// Document doc=builder.build(in);
10.
11.
//第二种方式 Document doc = builder.build(Front.class.getClassLoader()
12.
// .getResourceAsStream("menus.xml"));
13.
14. File file=new File(
"E:\\my\\menus.xml");
15. in=new FileInputStream(file);
16. Document doc=builder.build(in);
17.
18. Element element = doc.getRootElement();
19. List l = element.getChildren(
"frontmenus");
20. for (int i = 0; i < l.size(); i++) {
21. Element e1 = (Element) l.get(i);
22. List menuList = e1.getChildren(
"menu");
23. for (int j = 0; j < menuList.size(); j++) {
24. Element e2 = (Element) menuList.get(j);
25. String name = e2.getChildText(
"name");
26. String href = e2.getChildText(
"href");
27. String display = e2.getChildText(
"display");
28. if (
"1".equals(display)) {
29. menus.put(href, name);
30. }
31. }
32. }
33. } catch (Exception e) {
34. System.err.println(
"Error create XML parser");
35. }
36. return menus;
37. }
38. }

因为我刚开始做的时候是把xml文件发在类路径下,所以我选择了第一种方式或第二种方式读取
这是测试代码:


1. Front front=new Front();
2. Map<String,String> frontMenus=front.readXML();
3.
4. Iterator it=frontMenus.entrySet().iterator();
5. while(it.hasNext())
{
6. System.out.println(it.next());
7. }



但是使用第一种方式和第二种方式读取的时候,当xml文件中的内容改变了以后,再去读取如果不重新启动的话,读取的值还是以前读取的,也就是说没改变,但是用debug测试的时候,显示修改后再去读取是重新执行了读取方法的,无赖之下,用第三种方式测试了一下,这次没把xml放到类路径下,而是直接放到了项目文件夹下,使用了绝对路径的方式,这次却可行,修改后可以读出修改后的值,为什么会出现这种情况,百思不得期解,无赖之下请教各位大侠