package com.book.util; import java.io.File; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.bowlong.helper.xml.XMLHelper; public class DomXml { public static DomXml my = new DomXml(); public static Map<String , Sitesign> map = null; public static Map<String , Sitesign> getSitesignMap(){ if (map==null) { map = new HashMap<String, Sitesign>(); try { SAXReader saxReader = new SAXReader(); // InputStream is = my.getClass().getResourceAsStream("..\\resources\\sitesign.xml"); // Document doc = XMLHelper.parseFromStream(is); // Element root = doc.getRootElement(); // XMLHelper.getElementTextString(root); Document document = saxReader.read(new File("resources/sitesign.xml")); Element element = document.getRootElement(); // 得到Element对象 List<Element> list = element.elements("SiteSign"); // 取得节点集合 Sitesign ss = null; for (Element e : list) { ss = new Sitesign(); ss.setName(e.elementText("name")); ss.setUrl(e.elementText("url")); ss.setListStart(e.elementText("ListStart")); ss.setListEnd(e.elementText("ListEnd")); ss.setContentStart(e.elementText("ContentStart")); ss.setContentEnd(e.elementText("ContentEnd")); ss.setNeedDelStr(e.elementText("NeedDelStr")); map.put(ss.getUrl().split("/")[2], ss); } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 读取XML文件 } return map; } public static void main(String[] args) { System.out.println(getSitesignMap().size()); } }在本类中可以读到,其他的函数里也能 读到 问什么在其他类中的run函数里面 一直说是路径不对,求解!!!
你用的是相对路径,当然可能,这跟你的程序在什么路径下启动是有密切联系的。######我这是一个基于Tomcat的web项目 不启动服务器 直接写测试类 能够找到文件 而启动服务器后,里面的逻辑去调用就说路径不对!找了很久! 都没有找到处理办法! 急!!###### 急啥啊,用绝对路径吧###### 这是项目结构######建议参考这个代码: http://www.oschina.net/code/snippet_81246_3487######部署以后,确认一下sitesign.xml是否在WEB-INF/classes/resources/下 String siteSignPath=DomXml.class.getResource("/resources/sitesign.xml").getPath(); Document document = saxReader.read(new File(siteSignPath ));
这样使用应该是可以的 ######本地调用的话,路径是你的DomXml.class为当前路径 tomcat里面用的话,就以tomcat所在位当前路径了######谢谢7楼 正解
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。