dom4j 解析xml文档

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <students>  
  3.     <student>  
  4.         <name sn="01">张三</name>  
  5.         <age>18</age>  
  6.     </student>  
  7.     <student>  
  8.         <name sn="02">李四</name>  
  9.         <age>20</age>  
  10.     </student>  
  11. </students>  
  12. import java.io.File;   
  13. import org.dom4j.DocumentException;   
  14. import org.dom4j.Element;   
  15. import org.dom4j.ElementHandler;   
  16. import org.dom4j.ElementPath;   
  17. import org.dom4j.io.SAXReader;   
  18. /**  
  19.  * 在不读完XML文档的时候解析里面的数据  
  20.  * ElemnetHandler  
  21.  * ElementPath  
  22.  * @author Administrator  
  23.  *  
  24.  */  
  25.   
  26. public class ElementHandlerTest {   
  27.     public static void main(String[] args){   
  28.         //创建一个SAXReader对象来读取XML文档   
  29.         SAXReader sax = new SAXReader();   
  30.         //ADD一个Handler,用于监听,当读到对应元素时,采取相应的onStart,onEnd里面编写的方法   
  31.         //还要指定路径,有相对的,也有绝对的,下面就是绝对的   
  32.         //StudentHandler()和NameHandler()都是绝内部类,都implement ElementHandler   
  33.         sax.addHandler("/students/student"new ElementHandlerTest.StudentHandler());   
  34.         try {   
  35.             //读取一个XML文档,返回一个Document对象   
  36.             //读的时候就监听   
  37.             sax.read(new File("students.xml"));   
  38.                
  39.         } catch (DocumentException e) {   
  40.             e.printStackTrace();   
  41.         }   
  42.     }   
  43.     private static class StudentHandler implements ElementHandler{   
  44.         public void onStart(ElementPath elementPath) {   
  45.             //getCurrent()获得当前元素   
  46.             Element e = elementPath.getCurrent();   
  47.             //attributeValue("sn"))获得当前元素的sn属性   
  48.             System.out.println(e.attributeValue("sn"));   
  49.             //ElementPath里面也可以添加addHandler,这里面用的是相对路径   
  50.             elementPath.addHandler("name"new ElementHandlerTest.NameHandler());   
  51.         }   
  52.   
  53.         public void onEnd(ElementPath elementPath) {   
  54.             elementPath.removeHandler("name");   
  55.         }   
  56.     }   
  57.        
  58.     private static class NameHandler implements ElementHandler{   
  59.         public void onStart(ElementPath elementPath) {   
  60.             //获得当前路径   
  61.             System.out.println(elementPath.getPath());   
  62.         }   
  63.         public void onEnd(ElementPath elementPath) {   
  64.                
  65.             Element e = elementPath.getCurrent();   
  66.             //获得元素的值和名字   
  67.             System.out.println(e.getName()+":"+e.getText());   
  68.         }   
  69.            
  70.     }   
  71. }  

你可能感兴趣的:(xml)