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对象之间进行转换。本文会有所介绍。

原文地址:http://www.journaldev.com/1240/java-xml-tutorial

Java&Xml教程(一)简介的更多相关文章

  1. Java&Xml教程(六)使用JDOM解析XML文件

    JDOM 提供了非常优秀的Java XML API来更方便的读取.修改.生成XML文档.JDOM还提供了包装类供用户从SAX.DOM.STAX事件解析.STAX流解析中选择具体的实现. 在本教程中,我 ...

  2. Java&Xml教程(九)Java中通过XSD校验XML合法性

    Java XML校验API能够通过XSD(XML Schema Definition)校验XML文件内容的合法性.在下面的案例中使用javax.xml.validation.Validator 类通过 ...

  3. Java&Xml教程(八)使用JDOM将Java对象转换为XML

    在前面的教程中我们学习了如何使用JDOM解析和修改XML文件内容,本节介绍如何将Java对象转换为XML数据并生成文件. JDOM的Document类提供了便捷的方法创建元素和属性,XMLOutput ...

  4. Java&Xml教程(七)使用JDOM修改XML文件内容

    JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强.前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容. 在这个教程中,我们准备 ...

  5. Java&Xml教程(四)使用DOM方式生成XML文件

    在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...

  6. Java&Xml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

  7. Java&Xml教程(十一)JAXB实现XML与Java对象转换

    JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...

  8. Java&Xml教程(十)XML作为属性文件使用

    我们通常会将Java应用的配置参数保存在属性文件中,Java应用的属性文件可以是一个正常的基于key-value对,以properties为扩展名的文件,也可以是XML文件. 在本案例中,將会向大家介 ...

  9. Java&Xml教程(五)使用SAX方式解析XML文件

    Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...

随机推荐

  1. 2017北京ICPC C题 Graph

    #1629 : Graph 时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 The country contains N cities numbered from 1 to ...

  2. [luoguP2045] 方格取数加强版(最小费用最大流)

    传送门 水题 ——代码 #include <queue> #include <cstdio> #include <cstring> #include <ios ...

  3. node.js 利用流实现读写同步,边读边写

    //10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写 ...

  4. PHP输出缓冲控制 - Output Control 函 应用详解

    简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffe ...

  5. Ubuntu 16.04粘贴板增强工具Parcellite

    默认在Ubuntu已经有粘贴板增强工具,比如保存最近五个的复制文本历史. 1.系统默认 使用:[Ctrl]+[;] 然后用数字进行选择即可,但是只支持文本,只能保存最近5次 2.安装Parcellit ...

  6. SiteMesh2-示例工程

    了解SiteMesh的最佳方法是使用它.假设SiteMesh设置在您的Web应用程序中,本教程将展示如何掌握SiteMesh最强大的方面,如下所示装饰页面: 效果发生在第2步,其中Menu.jsp页面 ...

  7. BMP的图像处理

    近期碰到了一个问题将图片缩放: 进行了整理发现位图一些主要的结构能够进行整理,得出下面图表: 进行图片缩放的时候会进行一些处理(最临近差值法): 详细的代码例如以下: #include <std ...

  8. “2014年ArcGIS影像高级培训班——5月份北京站”火热报名中!

    您从事遥感类的相关工作吗?您正对着一景景影像数据不知从何下手吗?您有TB级甚至更高量级的影像数据须要有效管理.即时分享吗?您须要构建Web端的应用实现影像实时处理.在线分析吗? 您是否已经找到有效的解 ...

  9. 基于二叉搜索树的符号表和BST排序

    原代码例如以下: #include <stdlib.h> #include <stdio.h> //#define Key int typedef int Key; struc ...

  10. org.apache.solr.handler.dataimport.DataImportHandlerException: Data Config problem: 对实体 &quot;characterEn

    解决的方法:在配置数据库连接是讲url里的特殊符号要做转义 jdbc:mysql://IP:3306/数据库名?useUnicode=true&characterEncoding=utf8 改 ...