今天在做xml解析的时候,遇到一个问题:怎么用相对路径替换绝对路径?花了我半天的时间(水平不行浪费太多时间),写出来共享给大家,希望能够给大家帮助。在web工程中,有三种途径可以实现xml相对路径:
1>将xml放在WEB-INF目录下,通过getServletContext().getResourceAsStream("/WEB-INF/gather.xml");
2>将xml方法在WEB-INF/classes目录下或classpath的jar包中,则可以使用ClassLoader的静态方法getSystemResourceAsStream(String)读取
前两种方法是从网上找到的,还没有尝试,因为我采用的是得到xml的url,然后去解析的.
3>通过获得xml的url,然后根据url去解析的
获得url代码:
ClassLoader classLoader = Thread.currentThread.getContextClassLoader();
java.net.URL xmlURL = classLoader.getResource("gather/config/gather.xml");
SAXReader reader = new SAXReader();
Document document = reader.read(xmlURL);
如果不是在web工程中,可以用InputStream去解析xml,代码如下:
//className是类名
ClassLoader classLoader = className.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("gather/config/gather.xml");
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);