`
lhkzyz
  • 浏览: 347684 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

test.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包

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("-----------------------------------"); 
		}      
  	}
 }

 

输出结果为:

磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-----------------------------------
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000
-----------------------------------

  

第二种,利用Jdom方式解析xml文件,需要下载jdom.jar(见附件)

 

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("-----------------------------------"); 
    }   
  } 
} 

 

 

输出结果为:

磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-----------------------------------
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000
-----------------------------------

 

第三种,利用dom4j方式解析xml文件,需要下载 dom4j-1.6.1.jar(见附件)

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("-----------------------------------"); 
        }   
    }   
}  
       

 

输出结果为:

磁盘信息:
分区盘符:C
分区容量:8G
目录数:200
文件数:1580
-----------------------------------
磁盘信息:
分区盘符:D
分区容量:10G
目录数:500
文件数:3000
-----------------------------------

 

 

总结:DOM4J性能最好

           小文档情况下还值得考虑使用DOM和JDOM

10
9
分享到:
评论
6 楼 longjun 2012-09-24  
5 楼 caijingbin0207 2012-09-21  
虽然仅是java解析xml的部分方法,但是很是受用呀,还有别忘了sax解析的速度很快!
4 楼 xiaoxiao_0311 2012-09-20  
你这只是三种方法而已,不要说是三种方式好不?
3 楼 wiki_more 2012-09-20  
你这个标题得改改  不是方式  是API, 至于方式 我记得有dom sax stax
2 楼 pengyan5945 2012-09-20  
还有sax
1 楼 ufopw 2012-09-20  
jsoup

相关推荐

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...

    XML解析-dom4j.jar-jdom.jar

    在Java编程中,解析XML文档通常需要借助于特定的库,如dom4j和jdom。这两个库都是Java平台上处理XML的优秀选择。 dom4j是一个功能强大的开源XML处理库,提供了灵活且高效的API。它不仅支持DOM模型,还支持SAX...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    JAVA 解析XML 的JAr包 DOM4j.Jar JDOM.jar

    本篇将详细介绍使用DOM4j.Jar和JDOM.jar这两个Java库来解析XML文件的方法。 **DOM4j** DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的...

    java操作xml dom dom4j sax jdom

    DOM4J是基于DOM的Java XML库,提供了一种更方便的方式来处理XML,其API设计更加面向对象。DOM4J不仅支持DOM,还引入了XPath表达式来定位XML元素,这使得查询和操作XML变得更加直观。比如,你可以使用`...

    java dom4j解析xml

    - DOM4J支持两种解析方式:DOM解析和SAX解析。DOM解析会一次性加载整个XML文档到内存,适合小规模的XML;SAX解析则采用事件驱动,逐行读取,适合处理大规模的XML文件。 - 解析XML的基本步骤:创建解析器工厂,通过...

    xml(jdom-dom4j).rar_DOM4J_dom4j xml java

    DOM4J是Java中一个非常流行的XML处理库,它提供了灵活且高效的API,使得开发者能够轻松地进行XML的解析、创建、修改等操作。在Java领域,XML常用于数据交换、配置存储以及文档生成等场景,因此理解并掌握DOM4J对于...

    java 解析XML性能对比分析Demo

    我们将讨论DOM、SAX、JDOM、DOM4J和JAXB这五种解析器,以及它们各自的特点和适用场景。 1. DOM(文档对象模型)解析: DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历访问XML数据...

    xml数据前后台解析:jdom与dom4j源码,程序可以跑

    本文将深入探讨XML数据在前后台解析的过程中,重点介绍两种主流的Java XML解析库——JDOM和DOM4J,并提供实际运行的程序示例。同时,我们还会讨论如何使用jQuery在前端解析XML并展示数据。 首先,让我们了解XML的...

    Dom JDom 解析xml 文件

    在Java中,解析XML文件是常见的任务,其中DOM(Document Object Model)和JDOM是两种常用的方法。 DOM解析是XML解析的一种方式,它将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。每个节点代表XML文档的...

    dom4j.jar包,java解析xml dom4j.jar包

    解析XML文件时,DOM4J提供了两种主要的方式:DOM阅读器和SAX阅读器。 - **DOM阅读器**:首先,通过`DocumentFactory.createDocument()`方法创建一个`Document`对象,然后使用`read()`方法读取XML文件,将整个XML...

    java xml 4 种 解析xml 方法 sax jdom dom stAX

    为了处理XML文档,Java提供了多种解析方法,包括SAX(Simple API for XML)、JDOM(Java Document Object Model)、DOM(Document Object Model)以及stAX(Streaming API for XML)。下面将详细介绍这四种解析XML的...

    java 操作xml文件(dom4j-1.6.1.jar和jdom.jar)

    3. **元素和属性操作**:DOM4J提供了一种面向对象的方式来创建、修改和删除XML元素和属性。 4. **事件驱动的解析**:对于内存有限的情况,DOM4J可以通过SAX事件处理模型来处理XML文档。 5. **XML Schema支持**:DOM4...

    java解析XML的四种方式

    ### Java解析XML的四种方式详解 ...JDOM和DOM4J则在提供更优秀的性能和易用性方面表现突出,尤其是对于那些希望快速集成XML处理能力的Java应用程序。最终,开发人员应根据项目的需求和资源限制来决定使用哪种解析技术。

    dom4j-1.6.1

    - 解析XML文件:使用`DocumentReader`或`SAXReader`读取XML文件并构建DOM4J树形结构。 - 遍历XML:利用`Node`接口的方法如`childNodes()`,`elements()`遍历XML结构。 - XPath查询:通过`XPathExpression`执行...

    读取XML文件的四种方法

    在Java中,读取XML文件有多种方法,本文将介绍四种常见的方法:DOM、DOM4J、JDOM和SAX。 DOM(Document Object Model) DOM是W3C组织制定的XML文档对象模型,它提供了对XML文档的树形结构表示。使用DOM方法读取XML...

    使用JDOM解析XML文件

    在解析XML文件时,JDOM提供了SAXBuilder和DOMBuilder两种方式。SAXBuilder基于事件驱动,适用于处理大型XML文件,因为它占用较少的内存。DOMBuilder则一次性加载整个XML到内存,适合小型文件,便于进行快速访问。 ...

    XML 文件解析 DOM DOM4j JDOM SAX 和相对路径的写法 ,代码是有注释的

    本教程将详细介绍四种主要的XML解析方式:DOM、DOM4j、JDOM和SAX,以及如何在Java中处理XML文件的相对路径。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准,它将XML文档转化为一个树形结构,...

Global site tag (gtag.js) - Google Analytics