dom4J 解析Xml文档以及对象

Dom4J

Dom4J是一个易用,开源的库,多用于解析XML,Xpath,Xslt,它用于Java平台,采用了Java集合框架,并完全支持DOM,SAX和Jaxp
Dom4J的下载地址 http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/

1 读取/解析Xml文档(依赖于org.dom4j.io)

//该方法返回的是整个XML文档对象
public Document read(String fileName) throws SomeException{
   SAXReader saxReader = new SAXReader();
   Document doc = saxReader.read(new file(fileName));
   return doc;    
}


方法说明
read方法为重载形式的方法
read(InputStream is);  //使用输入流作为参数
read(File file);       //使用文件对象作为参数
read(Url url);         //使用同一转定位符作为参数


2 获取root根节点
任何一个规范的XML文件都必须有一个"根" 做为基础节点,如下例
 <?xml version="1.0" encoding="utf-8"?>
  <!--该文档中每一个Employee节点都可表示为一个Employee对象,每个对象都有四个属性---->
  <Employees>
   <Employee>
     <id>32001</id>
     <employeeName>Hostman</employeeName>
     <employeeAge>22</employeeAge>
     <employeeEmail>[email protected]</employeeEmail>
   </Employee>
   <Employee>
     <id>32002</id>
     <employeeName>green</employeeName>
     <employeeAge>23</employeeAge>
     <employeeEmail>[email protected]</employeeEmail>
   </Employee>
  </Employees>


//该方法返回的是Employees节点对象 
public Element getRootElement(Document document)throws SomeException{
   return document.getRootElement();  
 }


3 迭代XML树对象
有三种方法
 //rootElement 为根节点对象
 for (Iterator i = rootElement.elementIterator(); i.hasNext();) {
	 Element element = (Element) i.next();
                 for(int c=0;c<element.elements().size();c++){
                   Element node = (Element) element.elements().get(c);
                   System.out.println(node.getText());
      }

  for(Iterator i = rootElement.elementIterator();i.hasNext();){
				 Element e = (Element) i.next();
				  for(int c=0;c<e.elements().size();c++){
	                   Element node = (Element) e.elements().get(c);
	                   System.out.println(node.getText());
				 
      }

  for(Iterator i = rootElement.elementIterator("data");i.hasNext();){
				 Element e = (Element) i.next();
				  for(int c=0;c<e.elements().size();c++){
	                   Element node = (Element) e.elements().get(c);
	                   System.out.println(node.getText());
				 
      }

 //获取XML文档对象中的属性
 List list = rootElement.elements();
		     for(int i=0;i<list.size();i++){
		    	Element e = (Element) list.get(i);
		        List attrList = e.attributes();
		        for(int c=0;c<attrList.size();c++){
		        	 Attribute attr = (Attribute) attrList.get(c);
				     System.out.println(attr.getName() + "  " + attr.getText());
      }
		       
 }

猜你喜欢

转载自wangyuxiang2012.iteye.com/blog/1560152