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楼 正解