Java&Xml教程(一)简介
XML是广泛用于数据传输和存储的技术。Java语言提供个各种各样的API来解析XML,例如DOM、SAX、StAX、JAXB。也还有一些其他的API用于解析XML,例如JDOM。本教程的目的是探索使用不同类型的API解析XML和学习使用XML执行一些常见的任务。
DOM XML解析
DOM解析是最简单的解析方式,將XML文件加载到内存中,然后我们可以通过遍历Node节点来解析XML。DOM解析适用于内容较少的小文件,当文件较大时解析速度非常慢,并且很占用内存。
读取xml文件
此文介绍如何使用DOM解析XML文件,并将XML内容转换为Java对象。
生成XML文件
这篇文章介绍如何將Java对象转换为XML文件并存储到本地磁盘中。
修改XML文件
DOM解析机制同样可以用于修改XML数据。这篇文章介绍如何使用DOM解析机制新增元素、删除元素、修改元素值、修改属性等操作。
SAX XML解析
Java SAX解析机制提供了解析XML文档的API,SAX解析机制和DOM不同,它并不是將XML全部加载到内存中,而是按照顺序读取XML文档。它是基于事件的解析,我们需要实现自定义的Handler类,使用它的回调方法解析XML文件。当对大文件进行解析时,它比DOM解析机制效率更高。
读取XML文件
学习如何创建我们的回调Handler类,將XML内容读取到一个List中。
StAX XML解析
Java StAX 全称是Java Streaming API for XML,提供了解析XML的具体实现。StAX由两组API构成—基于游标的API和基于迭代器的API。
使用StAX Iterator API 读取XML文件
在这个教程中我们將学到如何使用StAX迭代的读取XML。
使用StAX Iterator API生成XML文件
在这个教程中我们將学到如何使用基于迭代器的StAX API生成XML。
使用StAX Cursor API读取XML文件
本文介绍如何使用StAX Cursor API 读取XML数据到Java对象中。
使用StAX Cursor API 生成XML文件
Java StAX Cursor API在创建XML并在其中输出数据方面是非常直接的。我们需要创建XMLStreamWriter对象,然后往对象中写数据即可。
JDOM XML解析
JDOM提供了非常优秀的API使得读取、修改、生成XML文件更加简单。它提供了包装类供你从SAX解析、DOM解析、StAX事件解析中选择具体的实现。
使用JDOM的好处是你可以从SAX、DOM STAX中切换解析器,而且可以提供工厂方法让客户机应用程序选择实现。
JDOM读取XML文件
这个教程中,我们将会学到如何使用JDOM读取XML文件。
JDOM生成XML文件
在这个教程中,我们会学习使用JDOM写XML文件。JDOM Document提供了创建元素和属性便捷的方法。XMLOutputter 类可以用于將Document对象写到任意的OutputStream或Writer对象。
JAXB
JAXB的全称是Java Architecture for XML Binding,使用它提供的API可以很轻松的將Java对象转换为XML,或将XML内容转换为Java对象。JAXB作为一个单独的项目,但是在Java 6中它成为JDK的一部分。
JAXB教程
使用JAXB非常简单,它使用注解,我们需要在Java对象上使用注解以指示创建XML,接着需要创建Marshaller將对象转换为XML,使用Unmarshaller將XML转换为Java对象。在这个教程中,我们將会学到大部分JAXB注解,并学会使用Marshaller將对象转换为XML,使用Unmarshaller將XML转换为对象。
JiBX
JiBX是非常强大的框架用于將XML和Java对象进行互相转换,它在使用XML作为数据传输格式的多应用集成方面使用较为广泛,例如Web Service和基于消息模型的系统集成。
JiBX教程
有许多框架可用于XML转换,如JAXB和XMLBeans,但JiBX对XML绑定和转换过程中使用不同的方法,JiBX通过工具类在编译时生成Ant脚本来执行这些任务。这种方法通过摆脱传统的两步处理方式,大大减少了处理时间。
XPath
XPath提供语法定义部分XML文档,XPath表达式使用查询字符串选择部分XML文档。使用XPath表达式,我们能够找到任何一个节点。
XPath教程
javax.xml.xpath 包提供了XPath的支持。可用通过XPath API提供的工厂方法创建XPathExpression,这个教程主要介绍使用XPath表达式查找XML节点。
一些XML相关任务
在Eclipse中从XSD中生成一般的XML
如果你从事Web Service相关工作,你需要使用XSD并测试WebService,你需要从XSD文件生成XML文件。Eclipse提供非常简单的方式帮你完成。
使用XSD校验XML合法性
Java XML Validation API可以使用XSD校验XML文件,这个教程中將使用到javax.xml.validation.Validator类。
Java XML 属性文件
通常我们java应用程序的配置参数存储在属性文件中。Java的属性文件可以是一个键值对的properties文件也可以是一个XML文件。在本例中介绍如何使用XML作为属性文件,并从属性文件中获取相关信息。
SOAP XML
Soap是基于XML的传输协议,Soap全称Simple Object Access Protocol.Soap是轻量级的数据交换机制,基于XML而且跨平台。
格式化XML文档
使用实用的工具类打印XML并將XML Document对象转换为字符串。
String和Document互相转换
有时我们在Java编程中,获得一个字符串,它的内容是XML数据格式,如果需要处理它,我们需要將它转换为一个Document对象。或者有时出于调试的目的,需要將Document对象转换为字符串输出。有两个实用的方法可以將String和Document对象之间进行转换。本文会有所介绍。
Java&Xml教程(一)简介的更多相关文章
- Java&Xml教程(六)使用JDOM解析XML文件
JDOM 提供了非常优秀的Java XML API来更方便的读取.修改.生成XML文档.JDOM还提供了包装类供用户从SAX.DOM.STAX事件解析.STAX流解析中选择具体的实现. 在本教程中,我 ...
- Java&Xml教程(九)Java中通过XSD校验XML合法性
Java XML校验API能够通过XSD(XML Schema Definition)校验XML文件内容的合法性.在下面的案例中使用javax.xml.validation.Validator 类通过 ...
- Java&Xml教程(八)使用JDOM将Java对象转换为XML
在前面的教程中我们学习了如何使用JDOM解析和修改XML文件内容,本节介绍如何将Java对象转换为XML数据并生成文件. JDOM的Document类提供了便捷的方法创建元素和属性,XMLOutput ...
- Java&Xml教程(七)使用JDOM修改XML文件内容
JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强.前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容. 在这个教程中,我们准备 ...
- Java&Xml教程(四)使用DOM方式生成XML文件
在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...
- Java&Xml教程(二)使用DOM方式解析XML文件
DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...
- Java&Xml教程(十)XML作为属性文件使用
我们通常会将Java应用的配置参数保存在属性文件中,Java应用的属性文件可以是一个正常的基于key-value对,以properties为扩展名的文件,也可以是XML文件. 在本案例中,將会向大家介 ...
- Java&Xml教程(五)使用SAX方式解析XML文件
Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...
随机推荐
- 树上启发式合并(DSU on tree)
//heavy-light decomposition style .//http://codeforces.com/blog/entry/44351 int cnt[maxn]; bool big[ ...
- [luoguP1631] 序列合并(堆 || 优先队列)
传送门 首先,把A和B两个序列分别从小到大排序,变成两个有序队列.这样,从A和B中各任取一个数相加得到N2个和,可以把这些和看成形成了n个有序表/队列: A[1]+B[1] <= A[1]+B[ ...
- 非常适合新手的jq/zepto源码分析02
function isPlainObject(obj) { return isObject(obj) && !isWindow(obj) && Object.getPr ...
- CString、char*与string的区别
三者的区别 CString 是MFC或者ATL中的实现: string 是C++标准库中的实现: char* 为C编程中最常用的字符串指针,一般以’\0’为结束标志. string和CString均是 ...
- ORA-15024: discovered duplicately numbered ASM disk 0
在尝试删除一个diskgroup的时候遇到这个错误. ORA-15024: discovered duplicately numbered ASM disk 0 这说明oracle认为有两个disk ...
- XA transaction ,JTA , two phase commit , GTX0-j
本文主要是对以前一直迷惑的几个名字的学习. xa transaction 简单查了一下,大概就是 distributed transaction. 相比传统的transaction而言,传统的tra ...
- ios7新增api实现扫描二维码
本来用的ZBar开源库实现的扫描二维码,可是貌似不支持arm64了,也没有在更新. 如今不用适配ios7下面.而iOS新增系统API已支持扫码,參考老外的一篇博客做了个demo.须要的能够參考下 參考 ...
- Rsync命令的使用
Rsync的命令格式能够为下面六种: rsync [OPTION]- SRC DEST rsync [OPTION]- SRC [USER@]HOST:DEST rsync [OPTION]- [US ...
- The return type is incompatible with JspSourceDependent.getDependants():JasperException问题分析与解决方法
Linux下基于JSP的报表集成到项目中后,显示不出来,查看tomcat的日志.有例如以下报错信息: The return type is incompatible with JspSourceDep ...
- 1245 最小的N个和(前k小ai+bi)
1245 最小的N个和 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有两个长度为 N ...