适用Dom4j时关于路径是一个麻烦的问题,所以特地的记录了下:
普通Java/Web项目:
普通Java项目/Web xml文件与项目同级:
- package com.wt.dom4j;
- import java.io.File;
- import java.util.Iterator;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- /**
- * Dom4j基础操作
- *
- * @author wTang
- * @editTime 2011年3月15日21:02:20
- *
- */
- public class Dom4jParser {
- public static void main(String[] args) throws DocumentException {
- parserXml("employee.xml");
- }
- private static void parserXml(String fileName) throws DocumentException {
- // 适用File适用于普通的java项目 位置存放于项目根目录下
- File input = new File(fileName);
- // SAXReadr对象
- SAXReader saxr = new SAXReader();
- // 调用SAXReader的read方法将文件对象传入进去即可获得文档对象
- Document document = saxr.read(input);
- // 获得文档的根元素
- Element rootElement = document.getRootElement();
- // 遍历一级节点
- for (Iterator i = rootElement.elementIterator(); i.hasNext();) {
- Element tag = (Element) i.next();
- for (Iterator k = tag.elementIterator(); k.hasNext();) {
- // 返回下一个迭代元素
- Element tag2 = (Element) k.next();
- System.out.println(tag2.getName()+":"+tag2.getText());
- }
- }
- }
- }
普通Java项目/Web xml文件位于src目录下就不能使用上面的方法了:
- package com.wt.dom4j;
- import java.util.Iterator;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- /**
- * Dom4j基础操作
- *
- * @author wTang
- * @editTime 2011年3月15日21:45:36
- *
- */
- public class Dom4jParser2 {
- public static void main(String[] args) throws DocumentException {
- parserXml("employee2.xml");
- }
- private static void parserXml(String fileName) throws DocumentException {
- // SAXReadr对象
- SAXReader saxr = new SAXReader();
- // 使用getResourceAsStream返回的是InputStream流对象 使用getResoruce返回是Java.net.url对象
- Document document = saxr.read(Dom4jParser2.class.getClassLoader()
- .getResourceAsStream(fileName));
- // 获得文档的根元素
- Element rootElement = document.getRootElement();
- // 遍历一级节点
- for (Iterator i = rootElement.elementIterator(); i.hasNext();) {
- Element tag = (Element) i.next();
- for (Iterator k = tag.elementIterator(); k.hasNext();) {
- // 返回下一个迭代元素
- Element tag2 = (Element) k.next();
- System.out.println(tag2.getName() + ":" + tag2.getText());
- }
- }
- }
- }
关于:getResourceAsStream() 和getResource()
推荐适用getResourceAsStream()它返回的是一个 InputStream流对象.
而getResorce()返回的则是一个java.net.url对象
推荐使用getResourceAsStream() .在使用webService的项目中吃过亏,getResource()方法被拒绝.