对java的xml做些总结,如有不当之处,欢迎指点。
以下均为针对sun的jdk。
SUN在JDK1.4中引入xml标准接口。
XML标准:JAXP(Java API for XML Processing)
JAXP API: javax.xml.parsers包
XML解析方式:SAX,DOM,STAX
DOM API: org.w3c.dom (Document Object Model)
SAX API: org.xml.sax (Simple API for XML)
STAX API: javax.xml.stream (Stream API for XML)
事实上org.w3c.dom包是参考了w3c标准,它也属于JAXP规范的一部分。
DOM:DOM有很多种解释。
1,从web展示的角度讲,DOM是一种文档对象模型,即对某种文档(如html,xml)的表现方式,通过浏览器或别的编程语言可以实现这种模型(通常是以树的结构形式存在于内存中),然后使用相关脚本或语言来操作具体的实现模型,从而实现对该模型代表的文档的操作。比如浏览器实现了DOM模型,该DOM模型以树的数据结构来表示html文档,其中树节点为html文档中的节点,使用js操作该DOM树即可实现对html文档的访问和操作。
2,从文档解析的角度来讲,DOM是对xml的一种解析方式。在java中,有三种解析方式,即上面提到的三种解析。
DOM解析:将xml以树结构的方式一次性加载进内存,易用,修改方便,但是更占内存。一般情况下用它即可应付大多数应用。
SAX解析:基于推模式的事件的方式来解析xml,较少占用内存,速度比DOM解析更快,适应于大文件。
STAX解析:基于拉模式的事件流的方式来解析xml,在3种解析方式中速度是最快的,可操作性也是最好的。
解析框架:Xerces , Crimson,JDOM,DOM4J
Xerces和Crimson都实现了DOM和SAX,即在框架内部都有DOM和SAX的解析器。
Crimson来自于Sun捐赠给Apache的ProjectX项目,Xerces来自IBM捐赠给Apache的XML4J项目。Xerces性能优于Crimson。
JDOM 的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。底层通常使用 SAX2 解析器。JDOM 仅使用具体类而不使用接口。
DOM4J是 JDOM 的一种智能分支,使用接口和抽象基本类方法。集成XPath等特性。速度比JDOM要快。
目前许多开源项目中大量采用 DOM4J,例如Hibernate 。如果不考虑可移植性,那就采用DOM4J吧!
以上几种api与框架关系的说明:
JAXP只是一个规范,其API内部默认具体实现还是依赖DOM和SAX的API,
而DOM和SAX的API的具体实现在1.6版本以前为Crimson,在1.6版本时更换为性能更好的Xerces。这源于sun和ibm之间的一些恩怨。
从jdk源码看出,在1.4版本中为:
javax.xml.parsers.SAXParserFactory{
public static SAXParserFactory newInstance(){
return (SAXParserFactory) FactoryFinder.find(
"javax.xml.parsers.SAXParserFactory",
"org.apache.crimson.jaxp.SAXParserFactoryImpl");
}
}
在1.6版本中为:
javax.xml.parsers.SAXParserFactory{
public static SAXParserFactory newInstance(){
return (SAXParserFactory) FactoryFinder.find(
"javax.xml.parsers.SAXParserFactory",
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
}
}
而当我们使用JAXP提供的xml处理接口的时候,是不需要知道其底层是如何实现的。
xml系列参考:
http://www.ibm.com/developerworks/cn/xml/theme/x-java.html
------------------
html 解析:
1,HTML Parser:速度快,便于分析dom树。一般情况用这个就够用了。
2,nekohtml:功能大而全,速度相对要慢。方便分析js脚本。
3,HtmlCleaner:将html转化为xml。
-------------------
xml的转化:
1,XStream:实现javabean和xml的相互转化。
2,XSL:将xml转化为html
分享到:
相关推荐
### ASP.NET 操作 XML 总结 在 ASP.NET 开发中,XML 文件作为一种常见的数据交换格式,被广泛应用于配置文件、数据存储等方面。本文将基于提供的代码片段,深入探讨 ASP.NET 中操作 XML 的方法,包括加载、添加元素...
本篇将详细总结在Java中如何读取和写入XML文件,以及相关的工具和技术。 首先,Java提供了一些内置的API来处理XML,如JAXB(Java Architecture for XML Binding)、DOM(Document Object Model)、SAX(Simple API ...
LINQ to XML 是 .NET Framework 中用于处理 XML 文档的一种强大工具,它提供了与 SQL 查询相似的语法,使得处理 XML 数据变得更为简洁和高效。在本文中,我们将深入探讨 LINQ to XML 的核心概念,以及如何使用 ...
C# 读写 XML 文件总结 C# 读写 XML 文件是软件开发中常见的操作。本文总结了 C# 读写 XML 文件的基本方法,包括创建、修改和删除 XML 节点。 创建 XML 节点 C# 中使用 `XmlDocument` 类来创建和操作 XML 文件。...
在总结以上知识点后,我们发现XML技术在现代数据管理与交换中扮演了不可或缺的角色。由于其开放性和灵活性,XML不仅被应用于网络数据交换,还在企业内部数据整合、内容管理等多个领域发挥着重要作用。随着技术的发展...
本篇文章主要聚焦于Java中解析XML的两种流行库——JDOM和DOM4J的总结。我们将深入探讨它们的工作原理、优缺点以及如何在实际项目中使用它们。 首先,让我们了解一下JDOM。JDOM是Java专门针对XML设计的一个解析库,...
总结来说,SAX适用于大型XML文件,节省内存;Pull解析轻量级,适用于移动设备;而DOM解析则提供了方便的树形结构,适合对XML结构的完整性和随机访问有要求的情况。开发者应根据实际需求选择合适的解析方式。
在Android开发中,XML解析是处理结构化数据的关键技术,主要分为SAX、Pull和DOM三种方式。本文将对这三种解析方式做一个详尽的总结。 首先,SAX(Simple API for XML)解析是一种基于事件驱动的方式。XMLReader接口...
本项目是对XML文件读写操作的综合总结,旨在提供一个实用的XML处理工具集。 首先,我们要关注的是“封装好的XML文件的读和写工程”。在编程中,通常我们会创建类或函数库来简化XML文件的操作。读取XML文件时,我们...
9. XML总结 - 总体而言,XML作为数据交换和存储的标准,提供了结构化、自描述和平台无关的解决方案,广泛应用于Web服务、配置文件、数据存储等多种场景。 理解XML的基础知识对于开发涉及数据交换的应用程序或系统...
XML(可扩展标记语言)是一种用于存储和传输结构化数据的标准格式,它允许用户自定义标签来表示所需的数据。与HTML不同,HTML主要用于展示数据,而XML则专注于数据的表示。在企业应用中,XML常被用作程序配置文件,...
- **XML总结**:回顾了XML的核心概念和技术,指明进一步学习的方向。 - **XML实例/测验**:提供了丰富的实践案例和测试题目,检验学习成果。 通过以上内容,我们可以看到XML不仅是一种数据格式,更是一套完整的...
XML 解析技术和文档定义形式 XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。在进行 XML 开发时,需要了解 XML 的解析技术和文档定义形式。下面将详细介绍 XML 解析技术和文档定义形式。 ...
总结,PowerBuilder 9为处理XML文件提供了强大的支持,通过XMLDocument对象和DOM解析器,我们可以轻松地读取、写入和操作XML数据。这些功能使PB9成为开发涉及XML的应用的理想工具,帮助开发者高效地完成数据交换和...
每个XML文档的开头通常会有一个XML声明,指明文档所使用的XML版本。XML元素必须成对出现,即每个开始标签都需要有相应的结束标签。这一点与HTML不同,HTML中有些元素可以省略结束标签。XML的标签名称是大小写敏感的...
### XML自学总结与知识点解析 XML(eXtensible Markup Language)是一种用于标记电子文档的规范,被设计用来传输和存储数据。以下是从标题、描述、标签及部分内容中提炼出的关键知识点,旨在全面理解XML的基本概念...
以上是XML的基础知识总结,涵盖了XML的基本概念、语法特点以及数据约束的方式,对于理解和使用XML进行数据存储和传输非常关键。在实际开发中,理解并掌握这些知识能够帮助我们更好地管理和处理结构化数据。
### Borland C++ Builder 6 XML处理总结 #### 一、安装XML处理组件 在Borland C++ Builder 6中处理XML文件时,需要安装一个名为`TXMLDocument`的组件。该组件属于Borland Internet Components的一部分,通常在安装...
#### 四、总结 本文详细介绍了如何使用C#来读取XML文件中的所有节点以及如何进行增删改查等基本操作。这些技术对于日常开发工作非常有用,可以帮助开发者高效地处理各种XML文件。掌握了这些基本技能后,还可以...
TinyXml 是一个轻量级的XML解析库,用于读写XML文档。它的设计目标是简单易用,适合嵌入到各种应用程序中。本文将深入探讨TinyXml中的关键知识点,包括节点类型、节点与元素的区别、节点遍历以及编码处理。 首先,...