- 浏览: 322449 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
上面我们已经学习了DOM和SAX两种解析XML的方式,但是总体来说,感觉这两种方式还是不太方便,解析起来非常费劲,非常繁琐,不是特别令人满意。所以现在在开源的世界里面,很多人或是很多社区已经帮助我们实现出来了针对XML解析的这些库,我们可以直接拿来用。经历过上面的DOM和SAX那么繁琐的解析方式之后,下面要讲的这些解析方式使用起来非常简单,非常方便。学习起来比较简单,经历过痛苦之后尝到甜头了。下面讲的这些解析方式在实际开发里面用的非常多,实际开发里面其实很少有人直接用JAXP(DOM或SAX)这种解析方式,但是它是基础,必须会。
下面要讲解的实际开发中常用的使用起来非常简单的解析方式有JDOM和DOM4J两种:
首先讲解JDOM:
JDOM(http://www.jdom.org/)。
附件xml_6.pdf包含JDOM详细笔记,是上课课件。仔细阅读
附件jdom-1.1.1.zip,它里面包含了jdom相关的所有内容,是从官网下载的完整包(里面包含API文档),网盘下载地址:http://pan.baidu.com/s/1b44OH
JDOM将DOM和SAX结合起来了,并且弥补了它们各自的不足之处,并且专门为java服务的,使用起来非常简单,详细笔记查看附件xml_6.pdf。
JDOM的使用是直截了当的,非常爽。
JDOM是由以下几个包组成的:
---org.jdom包含了所有的xml文档要素的java类
---org.jdom.adapters包含了与dom适配的java类
---org.jdom.filter包含了xml文档的过滤器类
---org.jdom.input包含了读取xml文档的类
---org.jdom.output包含了写入xml文档的类
---org.jdom.transform包含了将jdomxml文档接口转换为其他xml文档接口
---org.jdom.xpath包含了对xml文档xpath操作的类。
Org.jdom这个包里的类是你解析xml文件后所要用到的所有数据类型:
---Attribute
---CDATA
---Coment
---DocType
---Document
---Element
---EntityRef
---Namespace
---ProscessingInstruction
---Text
使用jdom需要引入jdom.jar文件,这个文件在附件的jdom-1.1.1.zip包里面。
下面是使用JDOM解析XML的一些示例:
JDomTest1.java:
JDomTest2.java:
附属类:
jdom.xml:
jdom2.xml:
JDOM的输出类(将构建好的XML输出到硬盘或是其它地方):XMLOutputter
JDOM的加载XML类(加载XML文档类):SAXBuilder、DOMBuilser、ResultSetBuilder
===========================上面讲解的是JDOM==========================
===========================下面讲解DOM4J=============================
下面讲解DOM4J:
Dom4J(www.dom4j.org)
这也是java里面用的非常多的另外一个解析XML框架。
DOM4J的来源:最开始是有JDOM,后来JDOM开发人员有一帮人就不在那干了,辞职了,自己搞出来一个DOM4J,既然这些人在JDOM干过,难免会留下JDOM的一些痕迹,因此DOM4J的使用方式以及API与JDOM很相似。
附件dom4j-1.6.1.zip,它里面包含了dom4j相关的所有内容,是从官网下载的完整包,网盘下载地址:http://pan.baidu.com/s/1vNo7O
要想使用dom4j,需要将dom4j-1.6.1.jar加入到classpath下面。
附件dom4j.chm,dom4jAPI文档,网盘下载地址:http://pan.baidu.com/s/1nFJx0
DocumentHelper是使用Dom4J过程中一些辅助方法的集合,用于帮助做一些辅助的事情,相当于util包里面的内容一样。这个类里面的所有方法都是静态方法。
Dom4J里面通过XMLWriter将文档内容写到目的地里面去
下面是利用Dom4J创建、解析XML的一些使用示例:
Dom4JTest1.java:
附属类:student2.xml:
笔记:
1、对于JDOM的Format类的getRawFormat()方法,通常用于XML数据的网络传输,因为这种格式会去掉所有不必要的空白,因此能够减少网络传输的数据量。
下面要讲解的实际开发中常用的使用起来非常简单的解析方式有JDOM和DOM4J两种:
首先讲解JDOM:
JDOM(http://www.jdom.org/)。
附件xml_6.pdf包含JDOM详细笔记,是上课课件。仔细阅读
附件jdom-1.1.1.zip,它里面包含了jdom相关的所有内容,是从官网下载的完整包(里面包含API文档),网盘下载地址:http://pan.baidu.com/s/1b44OH
JDOM将DOM和SAX结合起来了,并且弥补了它们各自的不足之处,并且专门为java服务的,使用起来非常简单,详细笔记查看附件xml_6.pdf。
JDOM的使用是直截了当的,非常爽。
JDOM是由以下几个包组成的:
---org.jdom包含了所有的xml文档要素的java类
---org.jdom.adapters包含了与dom适配的java类
---org.jdom.filter包含了xml文档的过滤器类
---org.jdom.input包含了读取xml文档的类
---org.jdom.output包含了写入xml文档的类
---org.jdom.transform包含了将jdomxml文档接口转换为其他xml文档接口
---org.jdom.xpath包含了对xml文档xpath操作的类。
Org.jdom这个包里的类是你解析xml文件后所要用到的所有数据类型:
---Attribute
---CDATA
---Coment
---DocType
---Document
---Element
---EntityRef
---Namespace
---ProscessingInstruction
---Text
使用jdom需要引入jdom.jar文件,这个文件在附件的jdom-1.1.1.zip包里面。
下面是使用JDOM解析XML的一些示例:
JDomTest1.java:
package com.shengsiyuan.xml.jdom; import java.io.FileOutputStream; import org.jdom.Attribute; import org.jdom.Comment; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; /** * JDOM的第一个使用示例 * 使用JDOM将一个内存里面构造好的XML文件写到硬盘上 * 类: JDomTest1 <br> * 描述: TODO <br> * 作者: * 时间: Dec 10, 2013 4:38:50 PM */ public class JDomTest1 { public static void main(String[] args) throws Exception { // 文档 Document document = new Document(); // 元素 Element root = new Element("root"); // 将元素添加到文档里面 document.addContent(root); // 注释 Comment comment = new Comment("This is my comments"); root.addContent(comment); Element e = new Element("hello"); // 设置属性 e.setAttribute("souhu", "www.souhu.com"); root.addContent(e); Element e2 = new Element("world"); // 属性 Attribute attr = new Attribute("test", "hehe"); e2.setAttribute(attr); e.addContent(e2); // 方法链编程风格 e2.addContent(new Element("aaa").setAttribute("a", "b").setAttribute( "x", "y").setAttribute("gg", "hh").setText("text conent")); // 定义XML的输出格式类,并在下面将此对象传递到XML的输出类XMLOutputter的对象里面去 // getPrettyFormat()是我们常见的比较好看的XML显示格式。 Format format = Format.getPrettyFormat(); // 设置缩进(演示此方法的使用,实际开发中上面的getPrettyFormat()方法获得的输出样式格式就很好看了) format.setIndent(" "); format.setEncoding("UTF-8"); // 实例化XML的输出类 XMLOutputter out = new XMLOutputter(format); out.output(document, new FileOutputStream("jdom.xml")); } }
JDomTest2.java:
package com.shengsiyuan.xml.jdom; import java.io.File; import java.io.FileOutputStream; import java.util.List; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; /** * 将JDomTest1.java创建好的XML文档进行修改,修改之后将内容存放到另一个XML文件jdom2.xml * 类: JDomTest2 <br> * 描述: TODO <br> * 作者: * 时间: Dec 11, 2013 9:52:35 AM */ public class JDomTest2 { public static void main(String[] args) throws Exception { SAXBuilder builder = new SAXBuilder(); // 加载文档到内存里面,并返回文档对象 Document doc = builder.build(new File("jdom.xml")); // 获得文档根元素 Element elemtent = doc.getRootElement(); System.out.println(elemtent.getName()); Element hello = elemtent.getChild("hello"); System.out.println(hello.getText()); // 获得所有属性 List list = hello.getAttributes(); for (int i = 0; i < list.size(); i++) { Attribute attr = (Attribute) list.get(i); String attrName = attr.getName(); String attrValue = attr.getValue(); System.out.println(attrName + "=" + attrValue); } // 删除hello元素里面的world子元素(包括world里面的所有东西也都删除了) hello.removeChild("world"); XMLOutputter out = new XMLOutputter(Format.getPrettyFormat()); // 将修改过的XML文件写到新的文件里面去 out.output(doc, new FileOutputStream("jdom2.xml")); } }
附属类:
jdom.xml:
<?xml version="1.0" encoding="UTF-8"?> <root> <!--This is my comments--> <hello souhu="www.souhu.com"> <world test="hehe"> <aaa a="b" x="y" gg="hh">text conent</aaa> </world> </hello> </root>
jdom2.xml:
<?xml version="1.0" encoding="UTF-8"?> <root> <!--This is my comments--> <hello souhu="www.souhu.com" /> </root>
JDOM的输出类(将构建好的XML输出到硬盘或是其它地方):XMLOutputter
JDOM的加载XML类(加载XML文档类):SAXBuilder、DOMBuilser、ResultSetBuilder
===========================上面讲解的是JDOM==========================
===========================下面讲解DOM4J=============================
下面讲解DOM4J:
Dom4J(www.dom4j.org)
这也是java里面用的非常多的另外一个解析XML框架。
DOM4J的来源:最开始是有JDOM,后来JDOM开发人员有一帮人就不在那干了,辞职了,自己搞出来一个DOM4J,既然这些人在JDOM干过,难免会留下JDOM的一些痕迹,因此DOM4J的使用方式以及API与JDOM很相似。
附件dom4j-1.6.1.zip,它里面包含了dom4j相关的所有内容,是从官网下载的完整包,网盘下载地址:http://pan.baidu.com/s/1vNo7O
要想使用dom4j,需要将dom4j-1.6.1.jar加入到classpath下面。
附件dom4j.chm,dom4jAPI文档,网盘下载地址:http://pan.baidu.com/s/1nFJx0
DocumentHelper是使用Dom4J过程中一些辅助方法的集合,用于帮助做一些辅助的事情,相当于util包里面的内容一样。这个类里面的所有方法都是静态方法。
Dom4J里面通过XMLWriter将文档内容写到目的地里面去
下面是利用Dom4J创建、解析XML的一些使用示例:
Dom4JTest1.java:
package com.shengsiyuan.xml.dom4j; import java.io.FileOutputStream; import java.io.FileWriter; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; /** * 使用Dom4J创建XML文档实例 * 类: Dom4jTest1 <br> * 描述: TODO <br> * 作者: * 时间: Dec 11, 2013 11:03:22 AM */ public class Dom4JTest1 { public static void main(String[] args) throws Exception { // 创建一个文档并设置文档的根元素:第一种方式: // Document document = DocumentHelper.createDocument(); // Element root = DocumentHelper.createElement("student"); // document.setRootElement(root); // 创建一个文档并设置文档的根元素:第二种方式: Element root = DocumentHelper.createElement("student"); Document document = DocumentHelper.createDocument(root); root.addAttribute("name", "zhangsan"); // 在根元素下面添加子元素并且将新添加的元素返回 Element helloElement = root.addElement("hello"); Element worldElement = root.addElement("world"); helloElement.setText("hello"); worldElement.setText("world"); helloElement.addAttribute("age", "20"); // 将构建好的xml文档写到目的地 XMLWriter xmlWriter = new XMLWriter(); // 输出到控制台上 xmlWriter.write(document); // 格式化输入的代码 OutputFormat format = new OutputFormat(" ", true); // 将代码输出到student2.xml里面(输出的第二种使用方式) XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream( "student2.xml"), format); xmlWriter2.write(document); // 将代码输出到student3.xml里面(输出的第三种使用方式) XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student3.xml"), format); xmlWriter3.write(document); // 使用FileWriter字符流构造出来的XMLWriter写完之后需要清空缓冲 xmlWriter3.flush(); } }
package com.shengsiyuan.xml.dom4j; import java.io.File; import java.util.Iterator; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.DOMReader; import org.dom4j.io.SAXReader; /** * 使用Dom4J解析XML(student2.xml) * 有两种解析方式:SAXReader和DOMReader,分别做演示 * 类: Dom4JTest2 <br> * 描述: TODO <br> * 作者: * 时间: Dec 11, 2013 1:45:02 PM */ public class Dom4JTest2 { public static void main(String[] args) throws Exception { // 第一种解析方式:SAXReader SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(new File("student2.xml")); Element root = doc.getRootElement(); System.out.println("root element: " + root.getName()); // 获得所有的子元素,不包括空白 List childList = root.elements(); System.out.println(childList.size()); // 获得名称为hello的子元素列表 List childList2 = root.elements("hello"); System.out.println(childList2.size()); // 返回以hello作为标签名的第一个元素(因为标签名称为hello的元素可能有多个) Element first = root.element("hello"); // 打印此标签元素里面名称为age的属性的值 System.out.println(first.attributeValue("age")); // 迭代根元素里面的所有子元素 for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element e = (Element) iter.next(); System.out.println(e.attributeValue("age")); } System.out.println("-----------------------------------------"); // 第二种解析方式:DOMReader // 记得在刚开始我们用DOM或SAX(JAXP)解析XML的时候使用的是org.w3c.dom.Document,但是当时感觉这两种方式直接解析XML的话非常繁琐、非常费劲。这里我们是用Dom4J在解析, // 而Dom4J里面也恰好有一个同名的类org.dom4j.Document,我们在这里解析的方式是将org.w3c.dom.Document对象转换成org.dom4j.Document然后再使用Dom4J进行解析。 // 首先下面三步是获得student2.xml文档的org.w3c.dom.Document对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); org.w3c.dom.Document document = db.parse(new File("student2.xml")); DOMReader domReader = new DOMReader(); // 将JAXP的org.w3c.dom.Document转换为Dom4J的org.dom4j.Document Document d = domReader.read(document); Element rootElement = d.getRootElement(); System.out.println(rootElement.getName()); } }
附属类:student2.xml:
<?xml version="1.0" encoding="UTF-8"?> <student name="zhangsan"> <hello age="20">hello</hello> <world>world</world> </student>
笔记:
1、对于JDOM的Format类的getRawFormat()方法,通常用于XML数据的网络传输,因为这种格式会去掉所有不必要的空白,因此能够减少网络传输的数据量。
- xml_6.zip (366.8 KB)
- 下载次数: 9
发表评论
-
领域精通涉及技术点(不分先后)
2017-12-20 19:35 613Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1631我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1426String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1173今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 454讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 968emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 439BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5751、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2960http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2299有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 1008spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 701java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 514诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 503http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 470Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 400要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 487spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1074需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 868按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 487912345
相关推荐
常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...
本文将深入探讨XML数据在前后台解析的过程中,重点介绍两种主流的Java XML解析库——JDOM和DOM4J,并提供实际运行的程序示例。同时,我们还会讨论如何使用jQuery在前端解析XML并展示数据。 首先,让我们了解XML的...
本篇文章主要聚焦于Java中解析XML的两种流行库——JDOM和DOM4J的总结。我们将深入探讨它们的工作原理、优缺点以及如何在实际项目中使用它们。 首先,让我们了解一下JDOM。JDOM是Java专门针对XML设计的一个解析库,...
在Java编程语言中,...总结,Java中的XML解析有多种方法,DOM4j和JDOM是其中两个流行的库,它们都提供了方便的API来创建、读取、修改和写入XML文档。开发者可以根据项目的具体需求和性能要求,选择合适的XML解析库。
为了处理XML文档,Java提供了多种解析方法,包括SAX(Simple API for XML)、JDOM(Java Document Object Model)、DOM(Document Object Model)以及stAX(Streaming API for XML)。下面将详细介绍这四种解析XML的...
在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...
本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...
为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、查询和修改变得简单。这个压缩包包含了DOM4J的完整版本,适用于那些希望在Java项目中使用DOM4J进行XML操作的开发者...
DOM4J是Java中一个非常流行的XML处理库,它提供了灵活且高效的API,使得开发者能够轻松地进行XML的解析、创建、修改等操作。在Java领域,XML常用于数据交换、配置存储以及文档生成等场景,因此理解并掌握DOM4J对于...
### DOM、JDOM、DOM4J解析XML实例 #### DOM解析XML DOM(Document Object Model)是一种树形结构的数据模型,用于表示XML或HTML文档。它允许程序在内存中加载整个文档,并通过提供的API来访问和修改文档中的任何...
本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
总结来说,DOM4J是Java开发中处理XML文档的强大工具,无论是在解析、查询还是修改XML方面,都提供了高效的解决方案。结合其轻量级的设计和对XPath的支持,DOM4J成为了Java开发者的首选XML库之一。
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...
DOM4J的开发目标与JDOM相似,即提供易于使用且直观的操作体验,但DOM4J更进一步,旨在成为解决所有Java/XML问题的完整方案。为了达到这一目标,DOM4J在防止应用程序错误方面可能不如JDOM那么严格,但它的灵活性和...
在Java中,解析XML文件是常见的任务,通常有四种主要的方法:DOM (Document Object Model),JDOM,DOM4J以及SAX (Simple API for XML)。以下是对这四种XML解析方式的详细介绍: 1. DOM解析: DOM是一种树形结构的...
在Java中,有多种方式来解析和操作XML文档,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM和DOM4J。每种方法都有其特点和适用场景,相应的,它们也需要引入特定的库文件。以下是对这些方法...
Jaxen可以与多种XML解析器(如DOM、DOM4J、JDOM等)协同工作,提供跨平台的XPath支持。 总结来说,DOM4J是一个全面且易用的XML处理工具,广泛应用于Java开发中。通过`dom4j-1.6.1.jar`和`jaxen-1.1.1.jar`这两个jar...