您的位置:首页 > 其它

dom4j解析xml文档

2015-12-24 10:27 281 查看
DOM4J:即Document Object Model for (4) 
Java的简称,主要是对xml文档进行解析(可能还有其他功能)的第三方工具包;使用dom4j和xpath表达式操作xml文档将是非常方便,现在举几个例子: 
 

 

 

 

 

 

 

假设我们要获取所有的bean,即id和class属性,那么我们可以这 做;

//创建一个sax解析器;

  SAXReader reader = new SAXReader();

  //将类路径下的user.xml文件以流的形式放回;

  InputStream input = Dom4JXpathTest.class.getClassLoader()

    .getResourceAsStream("user.xml");

  Document document = null;

  try {

   //将流对象解析成文档对象;

   document = reader.read(input);

   //获取所有的bean元 ;形成一个集合

   List nodes = document.selectNodes("/beans/bean");

   //遍历这个bean元 的集合;

   for (Element element : nodes) {

    //获取bean元 的id属性

    String id = element.attributeValue("id");

    //获取bean元 的class属性

    String className = element.attributeValue("class");

    System.out.println(id + "---" + className);

   }

  } catch (DocumentException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

xpath表达式:大家可以参看w3c组织的文档:http://www.w3school.com.cn/xpath/index.asp

可以说只要我们理解了xpath表达式,整个程序也就理解了,大家也不必刻意去记忆,找到相关文档查一下就可以了。


假设我们要获取所有id属性为user的bean元 ,那么我们可以这 做;


注意xpath://bean[@id='user']这个要理解;

再来一个例子吧,如果 想获得class属性为Student的bean元 ,我们可以这 做;


这里要注意的是,xml文件的路径要放对,即类路径下,也就是src目录下;

相比到这里我们对dom4j解析技术有了一个基本的了解了吧,大多数的框架,比如struts和spring等,用的解析技术都是dom4j;

这也就是我们为什么要 入dom4j.jar包的原 了,顺带提一句,使用xpath解析技术也要相关jar包,即jaxen-1.1-beta-6.jar

 

 

//创建一个sax解析器;  SAXReader reader = new SAXReader();  //将类路径下的xml文件以流的形式返回;  InputStream input = Dom4JXpathTest.class.getClassLoader()    .getResourceAsStream("user.xml");  Document document = null;  try {   //将流对象解析成一个文档对象;   document = reader.read(input);   Element element = (Element) document     .selectSingleNode("//bean[@class='Student']");   System.out.println(element.attributeValue("class"));  } catch (DocumentException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }

 //创建一个sax解析器;  SAXReader reader = new SAXReader();  //将类路径下是xml文件读取并以流的形式返回或者以URL的形式返回也可以,read方法用的到;  InputStream input = Dom4JXpathTest.class.getClassLoader()    .getResourceAsStream("user.xml");  Document document = null;  try {   //读取流,将流装换为文档对象,或者说解析为文档对象;   document = reader.read(input);   //由于我们知道指定的id值是user,则使用xpath表达式进行 入,返回一个element;   Element element = (Element) document     .selectSingleNode("//bean[@id='user']");   System.out.println(element.attributeValue("class"));  } catch (DocumentException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }

转发至微博 转发至微博
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: