java解析xml文件(三种方式-(dom ,jdom ,dom4j)

test.xml文件
Xml代码 
<?xml version="1.0" encoding="UTF-8"?>    
<HD>    
  <disk name="C">    
    <capacity>8G</capacity>    
    <directories>200</directories>    
    <files>1580</files>    
  </disk>    
   
  <disk name="D">    
    <capacity>10G</capacity>    
    <directories>500</directories>    
    <files>3000</files>    
  </disk>    
</HD>  
  
第一种,利用dom方式解析xml 文件,无需jar包
Java代码 
package Dom; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 
 
public class DomXML { 
     
    public static void main(String[] args)throws Exception { 
        //得到DOM解析器的工厂实例 
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
        //从DOM工厂中获得DOM解析器 
        DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder(); 
        //声明为File为了识别中文名 
        Document doc = null; 
        doc = dbBuilder.parse("F:/work_sapce_petroskill/Spring/src/Dom/test.xml"); 
         
        //得到文档名称为Student的元素的节点列表 
        NodeList list = doc.getElementsByTagName("disk"); 
         
        //遍历该集合,显示结合中的元素及其子元素的名字 
        for(int i = 0; i< list.getLength() ; i ++){ 
            Element element = (Element)list.item(i); 
            String name=element.getAttribute("name"); 
            String capacity=element.getElementsByTagName("capacity").item(0).getFirstChild().getNodeValue(); 
            String directories=element.getElementsByTagName("directories").item(0).getFirstChild().getNodeValue(); 
            String files=element.getElementsByTagName("files").item(0).getFirstChild().getNodeValue(); 
            System.out.println("磁盘信息:");  
            System.out.println("分区盘符:"+name);  
            System.out.println("分区容量:"+capacity);  
            System.out.println("目录数:"+directories);  
            System.out.println("文件数:"+files);  
            System.out.println("-----------------------------------");  
        }       
    } 


输出结果为:
Xml代码 
磁盘信息: 
分区盘符:C 
分区容量:8G 
目录数:200 
文件数:1580 
----------------------------------- 
磁盘信息: 
分区盘符:D 
分区容量:10G 
目录数:500 
文件数:3000 
----------------------------------- 
 
第二种,利用Jdom方式解析xml文件,需要下载jdom.jar(见附件)

Java代码 
package Dom; 
import java.util.List; 
 
import org.jdom.Document; 
import org.jdom.Element; 
import org.jdom.input.SAXBuilder; 
public class JDomXML {  
  public static void main(String[] args) throws Exception{   
    SAXBuilder sb=new SAXBuilder();  
    Document doc=sb.build(Dom4jXML.class.getClassLoader().getResourceAsStream("Dom/test.xml")); //构造文档对象 
    Element root=doc.getRootElement(); //获取根元素 
    List list=root.getChildren("disk");//取名字为disk的所有元素  
    for(int i=0;i<list.size();i++){  
       Element element=(Element)list.get(i);  
       String name=element.getAttributeValue("name");  
       String capacity=element.getChildText("capacity");//取disk子元素capacity的内容  
       String directories=element.getChildText("directories");  
       String files=element.getChildText("files");  
       System.out.println("磁盘信息:");  
       System.out.println("分区盘符:"+name);  
       System.out.println("分区容量:"+capacity);  
       System.out.println("目录数:"+directories);  
       System.out.println("文件数:"+files);  
       System.out.println("-----------------------------------");  
    }    
  }  
}  


输出结果为:
Xml代码 
磁盘信息: 
分区盘符:C 
分区容量:8G 
目录数:200 
文件数:1580 
----------------------------------- 
磁盘信息: 
分区盘符:D 
分区容量:10G 
目录数:500 
文件数:3000 
----------------------------------- 

第三种,利用dom4j方式解析xml文件,需要下载 dom4j-1.6.1.jar(见附件)
Java代码 
package Dom; 
import java.util.Iterator; 
import org.dom4j.Document; 
import org.dom4j.Element; 
import org.dom4j.io.SAXReader; 
 
public class Dom4jXML{    
   public static void main(String[] args) throws Exception { 
     
        //创建文件对象    
        java.io.File file=new java.io.File("F:/workSapce/javaXML/src/Dom/test.xml");    
        //创建一个读取XML文件的对象    
        SAXReader reader=new SAXReader();    
        //创建一个文档对象    
        Document document=reader.read(file);    
        //获取文件的根节点    
        Element element=document.getRootElement(); 
        for(Iterator i=element.elementIterator("disk");i.hasNext();){ 
            //获取节点元素    
            element=(Element)i.next(); 
            String name=element.attributeValue("name"); 
            String capacity=element.elementText("capacity");//取disk子元素capacity的内容  
            String directories=element.elementText("directories");  
            String files=element.elementText("files");  
            System.out.println("磁盘信息:");  
            System.out.println("分区盘符:"+name);  
            System.out.println("分区容量:"+capacity);  
            System.out.println("目录数:"+directories);  
            System.out.println("文件数:"+files);  
            System.out.println("-----------------------------------");  
        }    
    }    
}   
        

输出结果为:
Xml代码 
磁盘信息: 
分区盘符:C 
分区容量:8G 
目录数:200 
文件数:1580 
----------------------------------- 
磁盘信息: 
分区盘符:D 
分区容量:10G 
目录数:500 
文件数:3000 
----------------------------------- 


总结:DOM4J性能最好
           小文档情况下还值得考虑使用DOM和JDOM
jdom.jar (149.2 KB)
下载次数: 33
dom4j-1.6.1.jar (306.5 KB)
下载次数: 38

猜你喜欢

转载自xzhijun-893.iteye.com/blog/1782192