- 浏览: 912297 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
天天来注册:
...
try catch finally 用法 -
tadpole_java:
谢谢你的分享。
二十七、Qt数据库(七)QSqlRelationalTableModel(转) -
359449749tan:
android之EditText文本监听(addTextChangedListener) -
michael_wang:
人过留名 多谢分享
Android NOtification 使用 -
wilsonchen:
wangqi0614 写道这个删除是删除所有的把?能不能值删除 ...
Android的SharedPreferences保存与删除数据简单实例
package com.parse.sym; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; public class Test { /** * @param args * * XML采用两种方法:Dom4J和SAX * Dom4J优缺点:解析的过程中是把整个XML文件作为一个对象,不管文件有多大,放进到内存中 * 采用的是xpath方式解析XML,即在XML中找到指定节点的路径path,可以直接拿到想要的节点 * 当文件很大时,这种方式不是很理想,所以一般处理小文件 * SAX优缺点: 解析的过程非常类似于流媒体,就是读一点,我就解析一点。所以适合处理大文件 * */ public static void main(String[] args) { //dom4j进行解析 XMLparse parse=new XMLparse(); // try { // parse.dom4jParse("D:\\testxml.xml"); // } catch (DocumentException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } //sax进行解析 try { parse.saxParse("D:\\testxml.xml"); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } package com.parse.sym; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.xml.sax.SAXException; public class XMLparse { public void dom4jParse(String pathName) throws DocumentException { File file = new File(pathName); SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(file); Element root = doc.getRootElement(); Element fooElement; for (Iterator<Element> i = root.elementIterator("disk"); i.hasNext();) { fooElement = i.next(); System.out.println("name:" + fooElement.attributeValue("name")); System.out .println("capacity:" + fooElement.elementText("capacity")); System.out.println("directories:" + fooElement.elementText("directories")); System.out.println("files:" + fooElement.elementText("files")); System.out.println(">>>>>>>>>>>>>>>>>>>>"); } } /** * SAX工作原理:在Sax的解析过程中,读取到文档开头、结尾,元素的开头和结尾都会触发一些回调方法,你可以在这些回调方法中进行相应事件处理 * 这四个方法是:startDocument() 、 endDocument()、 startElement()、 endElement * 此外,光读取到节点处是不够的,我们还需要characters()方法来仔细处理元素内包含的内容 * 将这些回调方法集合起来,便形成了一个类,这个类也就是我们需要的触发器 一般从Main方法中读取文档,却在触发器中处理文档, * 这就是所谓的事件驱动解析方法 * 在触发器中,首先开始读取文档,然后开始逐个解析元素,每个元素中的内容会返回到characters()方法 * 接着结束元素读取,所有元素读取完后,结束文档解析 */ public void saxParse(String pathName) throws ParserConfigurationException, SAXException, IOException{ SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); File file = new File(pathName); SaxHandler dh = new SaxHandler(); parser.parse(file, dh); } } package com.parse.sym; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxHandler extends DefaultHandler{ /* 此方法有三个参数 arg0是传回来的字符数组,其包含元素内容 arg1和arg2分别是数组的开始位置和结束位置 */ @Override public void characters(char[] arg0, int arg1, int arg2) throws SAXException { String content = new String(arg0, arg1, arg2); System.out.println(content); super.characters(arg0, arg1, arg2); } @Override public void endDocument() throws SAXException { System.out.println("\n…………结束解析文档…………"); super.endDocument(); } /* arg0是名称空间 arg1是包含名称空间的标签,如果没有名称空间,则为空 arg2是不包含名称空间的标签 */ @Override public void endElement(String arg0, String arg1, String arg2) throws SAXException { System.out.println("结束解析元素 " + arg2); super.endElement(arg0, arg1, arg2); } @Override public void startDocument() throws SAXException { System.out.println("…………开始解析文档…………\n"); super.startDocument(); } /*arg0是名称空间 arg1是包含名称空间的标签,如果没有名称空间,则为空 arg2是不包含名称空间的标签 arg3很明显是属性的集合 */ public void startElement(String arg0, String arg1, String arg2, Attributes arg3) throws SAXException { System.out.println("开始解析元素 " + arg2); if (arg3 != null) { for (int i = 0; i < arg3.getLength(); i++) { // getQName()是获取属性名称, System.out.print(arg3.getQName(i) + "=\"" + arg3.getValue(i) + "\""); } } System.out.print(arg2 + ":"); super.startElement(arg0, arg1, arg2, arg3); } } <?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>
饿咕~~(╯﹏╰)b
- dom4j.jar (306.5 KB)
- 下载次数: 0
发表评论
-
判断两二叉树相等
2014-05-29 00:13 1137bool IsBSTEqual(BNode* root1, ... -
数据去重
2014-05-29 00:11 841引用 使用数据结构丰富的脚本语言,如Python,利用其中的字 ... -
判断一个整数是否为2的次方幂
2014-05-28 23:56 885/* 判断一个整数是否为2的次方幂 */ bool ... -
实现Comparable接口,进行排序
2014-05-28 23:47 8827import java.util.ArrayList; ... -
Struct2详解
2014-05-21 15:14 925引用 Servlet的缺点: 1、web.xml配置比较多 2 ... -
常用方法
2014-04-25 20:24 786[color=red]String[/color] ... -
java nio和io的比较
2014-04-16 19:49 1754引用 第一部分:简单介绍NIO 服务器在合理时间内处理 ... -
Struts2、Spring3、HIbernate4总结
2014-04-16 10:35 866引用 第一部分:Struts2 1 ... -
Finally的使用总结
2014-04-15 22:02 896//清单一: public class ... -
Fibonacci数列的递归与非递归
2014-04-15 20:57 738//非递归实现 //f(1)=1,f(2)=1,f(n) ... -
Java中的异常
2014-04-14 09:42 650引用 Throwable包括两个子类:Error和Except ... -
JVM的垃圾回收机制
2014-04-13 18:39 870引用 堆被划分为新生代和旧生代, 新生代包含Eden 和 S ... -
集合类总结
2014-04-04 15:54 672引用 一. 总的框架 总的有Collection和Map Co ... -
设计模式之策略模式
2014-04-01 17:07 632main ======================= ... -
设计模式之责任链模式
2014-04-01 16:32 750main ======================= ... -
设计模式之访问者模式
2014-03-31 18:57 869main ======================= ... -
设计模式之工厂模式
2014-03-31 11:33 642main ======================= ... -
设计模式之观察者模式
2014-03-30 15:04 869main =============== ... -
Java虚拟机JVM详解
2014-03-29 12:13 1322引用 第一部分:JVM基本结构 1.什么是JVM 一个java ... -
Java中的反射机制Reflect
2014-03-28 17:17 3618package com.reflect.sym; i ...
相关推荐
总结起来,dom4j库提供了DOM和SAX两种XML解析方式,而SAX解析在处理大文件时具有性能优势。通过注册事件处理器,开发者可以在解析过程中动态响应XML结构,实现灵活的数据处理。在实际工作中,选择合适的解析方法取决...
例如,以下代码展示了如何使用dom4j和jaxen解析XML: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.jaxen.JaxenException; import org.jaxen.XPath...
本教程将深入探讨Dom4J和SAX两种解析器在处理XML时的使用方法和特点。 **DOM解析**: DOM解析器将整个XML文件加载到内存中,构建一棵由节点组成的树形结构,称为DOM树。这种解析方式方便对XML进行随机访问,但对...
本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...
- DOM4J支持两种解析方式:DOM解析和SAX解析。DOM解析会一次性加载整个XML文档到内存,适合小规模的XML;SAX解析则采用事件驱动,逐行读取,适合处理大规模的XML文件。 - 解析XML的基本步骤:创建解析器工厂,通过...
解析器有SAX和DOM两种模式,SAX是事件驱动的,适用于大文件,而DOM则将整个文档加载到内存中,适合小文件。 2. **创建XML**:DOM4J允许程序员动态创建XML文档,通过Element、Attribute、Namespace等类来构建XML结构...
解析XML文档是理解和操作这些数据的关键步骤,主要有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。这两种方法各有优缺点,适用于不同的场景。 一、DOM解析 DOM解析器将整个XML文档加载...
2. **XML解析**:DOM4J支持多种解析方式,包括SAX(Simple API for XML)和DOM。SAX是基于事件的解析,适用于处理大文件;DOM则将整个XML文档加载到内存,适合小规模或内存允许的情况。DOM4J还提供了StAX(Streaming...
本篇文章将详细介绍DOM和SAX解析XML的方法,并通过提供的`DomDemo.java`和`SaxDemo.java`示例代码进行阐述。 1. DOM解析: DOM是一种将整个XML文档加载到内存中,构建一个树形结构的解析方式。这种方式允许开发者...
在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型XML文档,因为它不会将整个文档加载到内存中。DOM,即文档对象模型,会构建一个完整的XML树,适合小型或中等大小的...
XML解析主要有两种方式:DOM(文档对象模型)和SAX(简单API for XML)。DOM解析会将整个XML文档加载到内存中形成一棵树形结构,方便访问任意节点,但内存消耗大;SAX解析则采用事件驱动,逐行读取XML,适合处理大型...
"sax_xml sax_解析_xml"标签表明了本压缩包包含使用SAX解析XML的示例代码。 3. **JDOM**:JDOM是一个Java API,专门用于读写XML文档。它提供了一个更面向Java的对象模型,使得XML处理更加直观。JDOM在DOM的基础上...
2. **XML解析方式**:dom4j提供了两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是流式解析,适用于处理大型XML文件;DOM则是将整个XML文档加载到内存,适合小型或中型文档...
在Java编程中,解析XML文档通常需要借助库,如DOM4J和XPath。DOM4J是一个灵活且功能强大的开源Java XML API,它提供了XML的读取、写入、修改和遍历等功能。XPath则是W3C标准中的一个查询语言,用于在XML文档中查找...
解析XML文件时,DOM4J提供了两种主要的方式:DOM阅读器和SAX阅读器。 - **DOM阅读器**:首先,通过`DocumentFactory.createDocument()`方法创建一个`Document`对象,然后使用`read()`方法读取XML文件,将整个XML...
为了在Java项目中使用DOM4J解析XML,你需要将这两个jar文件(dom4j-1.6.1和jaxen-1.1-beta-7.jar)添加到你的类路径(classpath)中。这可以通过在IDE中配置构建路径,或者在命令行中指定 `-cp` 参数来完成。一旦...
DOM4J和JAXEN是Java中解析XML的两个重要库,它们在处理XML文档时提供了强大的功能。这里我们将深入探讨这两个库的核心概念、用途以及它们如何协同工作。 DOM4J是一个灵活且功能丰富的XML库,它完全支持JAXP(Java ...