`
gq913
  • 浏览: 169011 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XML基础

    博客分类:
  • JAVA
阅读更多

XML篇

 

   说XML这块的东西倒不是因为研究的比较深入,只是因为项目里面使用的XML太频繁了,不过只是相当简单的使用,所以在这里只能算是一个对XML技术的相关资料的总结、备忘。


XML解析标准
    这里说可能不太熟悉,但是如果换几个词就应该清楚。DOM、SAX。比较熟悉吧。这里之所以说他们是标准,只因为这两个东西定义的只是XML解析的方式,而此方式的具体实现跟这两个东西是没有关系。对比一下写程序,这里就是“接口”,定义了规约,想怎么实现都是可以的。

    --DOM(Document Object Model):文档对象模型。原理就是把XML解析为内存中的可以树。由于XML保存在内存中了,所以,可以对其进行相应的增、删、改、查,操作。这里就需要说一下XPath了,XPath 为在一颗树中查找XML内容的方式定义。也是一个标准的东西,你满足了其相应的语法,即可在DOM树中查找到相应的内容。使用起了还是相当方便的。

     --SAX(Simple API for XML) : 以事件驱动的解析方式,所谓的“推”方式的XML解析。原理就是在解析XML时,碰到不同的节点,则上报不同的事件,对不同的事件定义不同的回调函数,完成相应的解析逻辑。SAX对XML文档应该就是一次解析,并且不保留解析状态,所以SAX比DOM方式速度会快点、内存使用少点,但是功能上就要弱很多了。
     --StAX(Streaming API for XML):这个东西可能有点陌生。这是所谓的“拉”方式的XML。原理就是平时常见的遍历,即扫描XML文档,当发现我感兴趣的部分时,才开始进行解析。所以,说速度的话,这是三种中最快的一个,而且编写代码也相对简单。它可以多次对同一个文档进行解析。但是相对的,它的缺点也是很明显的,就是无法对XML进行合法性验证,所以即便是不太完整的XML文档,也可以用它完成解析。StAX在JDK6.0中被加入。这里 有篇好文介绍StaX的


    JDK中的位置: 以上标准,JDK中都已经包括相应的接口定义。DOM -- org.w3c.dom; SAX -- org.xml.sax; StAX -- org.xml.stream(JDK6.0)
    更多细节的东西可以参考sun的教程

XML解析器
解析器即为XML解析标准的具体实现。不同的解析器,对应的实现接口都是统一的(DOM的、SAX的、StAX的)。所以不要看见JDOM就认为它只能以DOM方式解析,其实它也支持SAX的。常见的解析器有以下几种:Xerces JavaCrimsonJDOMdom4j。各解析器的具体使用可以参考具体doc即可。
   StAX是一个比较特殊的。JDK6.0刚开始提供支持,所以不是很清楚它的解析器。而基于这种XML Pull方式的解析器,因为速度快、消耗内存小,很早就被用于手机上的XML解析了,比较著名的就是kxml 。有兴趣的大家可以查下看看。


XML解析(绑定)工具
   有了标准、有了实现还不够吗?这个工具干什么使的?标准有了、解析器有了,但是实用性还是差一点,所以,诞生了很多XML解析的工具。它的功能就是,避免你面对解析过程,而是直接面对XML里对你有用的东西。常见的有如下一些:XMLBean ,XStreamCastorJBindQuickZeus


项目中的XML
    项目中我们用到了两处XML解析,分别使用了两个不用的解析器。一个地方使用的是Kxml的解析器,用于把XML压缩过后的文档转换成一般的文本的文档。另一个地方用户的是Zeus,主要是把XML文本文档解析为Java对象。这里主要说下Zeus。把DTD给Zeus,它可以生产能解析对应DTD文档的Java对象;反之,如果你使用这些Java对象把相应的树型XML文档定义构造好,又可用这些Java对象生成相应的XML文档。Zeus使用SAX方式解析的,效率还是相当高的,测评可以参考下面给出的文章。
   目前感觉使用Zeus很麻烦的一点就是“有效信息的获取”。Zeus产生的Java对象是按XML的树型结构组织的,所以如果要获取层次比较深的内容时,会相当麻烦,因为你必须一层一层打开Java对象,而且有些节点定义还可能时List型的,这样又需要遍历List中的所有元素,同时,每次打开一个Java对象以后,还必须判断此Java对象是否为NULL,别看这一点判断,因为对象多了以后,会很麻烦。我们应用中嵌套深一点的可能在7、8层这样子,已经是相当麻烦了。在这种时候你就不得不考虑一下XPath的便捷了。所以,这里是否应该使用Zeus还是值得斟酌一下的。有效信息的获取上是一个相当麻烦的问题。
   木已成舟,该做的都做的差不多,想用XPath也用不了。偏偏在这种时候又让我看到一个工具——JXpth 。这是一个在Java对象树中使用XPath语法进行查找的工具。可惜是相见恨晚啊...这个东西只是大概看了一下,没有具体使用。所以了解不多,是否真正能够放到应用中还是一个问题。
   XML这块还有一个比较大的问题,就是Zeus生成的对象已经被使用到业务部分,造成现在即便想替换掉Zeus也是一个比较大的问题。这块以前也考虑过,但是还是没有想到太好的数据传递的方式,现在暂时也没有什么太大的问题。只是不知道以后会碰到什么,有点担心。


几篇好文
  下面列几篇文章吧,相当的精彩。
  Java 中的 XML: Java 文档模型的用法
  Java 中的 XML: 文档模型,第一部分:性能
  Java 中的 XML: 数据绑定,第 1 部分:代码生成方法 — JAXB 及其它
  Java 中的 XML: 数据绑定,第 2 部分:性能

分享到:
评论

相关推荐

    XML基础教程与实验指导

    学习XML基础教程与实验指导,应掌握以上基本概念,并通过实践操作加深理解。PPT.rar 文件可能包含了关于这些主题的演示文稿,可以帮助深入学习和讲解XML的相关知识。通过实际编写和解析XML文档,以及使用XPath进行...

    Xml基础教程 高怡新 ppt 源码

    在本教程中,"Xml基础教程 高怡新 ppt 源码",我们将深入探讨XML的基本概念、语法以及它在IT领域的应用。 首先,XML的全称“可扩展标记语言”意味着它允许用户自定义标签,这与HTML(超文本标记语言)不同,HTML...

    xml基础.pdf

    ### XML基础知识详解 #### 一、XML概述 **XML**(可扩展标记语言,Extensible Markup Language)是一种标记语言,其设计目的是为了传输和存储数据。与HTML相比,XML更侧重于数据的描述而非展示。XML的核心优势在于...

    xml基础教程(ppt)

    通过这个“xml基础教程”PPT,你将能够学习到XML的基础语法、数据组织方式以及如何利用相关技术处理XML文档。实践是检验真理的唯一标准,建议结合提供的源码进行实际操作,以巩固理论知识。同时,持续学习和理解XML...

    xml基础教程ppt

    在本“XML基础教程PPT”中,我们将深入探讨XML的基本概念、语法以及它在IT领域的广泛应用。 首先,让我们了解XML的起源。XML是从HTML发展而来的,但与HTML的主要区别在于XML不包含任何预定义的标签。在XML中,你...

    XML基础教程电子书(XML学习)

    XML,全称为eXtensible Markup Language,可扩展标记语言,是互联网上数据交换与存储的重要..."XML基础教程"电子书将涵盖这些内容,帮助初学者掌握XML的使用,从而能够有效地在各种项目中利用XML进行数据管理和交换。

    XML基础教程(自己整理的)

    通过学习这个XML基础教程,你可以掌握XML的基本概念、结构和使用方法,为更深入的XML应用,如Web服务、数据交换和配置文件等奠定基础。实际操作中的例子能帮助你更好地理解和运用这些知识。记得实践是检验真理的唯一...

    学习XML基础的课件

    在本套“学习XML基础的课件”中,你将深入理解XML的核心概念及其在不同领域的应用。 首先,让我们从基础开始。`ch01_1.doc`可能涵盖XML的基本介绍,包括XML的起源、它与HTML的区别,以及XML文档的基本结构。XML文档...

    xml基础教程|源码

    在这个“XML基础教程|源码”中,我们将深入探讨XML的基本概念、语法以及如何通过源码来学习和操作XML。 1. XML基本概念: - **定义**:XML是一种自描述性的标记语言,允许用户自定义标签来描述数据。 - **结构**...

    XML基础教程源码-code

    在提供的"范春梅-XML基础教程源码-code"中,你可以找到关于XML处理的实例代码,可能包括创建、解析、修改XML文档等操作。通过这些源码,你可以更好地理解XML在实际开发中的应用。 总之,XML作为一种数据交换和存储...

    Xml基础教程 高怡新版 源代码 ppt(传错了 勿下载)

    高怡新版的XML基础教程是针对初学者设计的,旨在帮助读者快速掌握XML的基本概念、语法和应用。 XML的基础部分包括以下几个方面: 1. **XML概述**:XML的设计目标是为了传输和存储数据,而不是为了显示数据。与HTML...

    xml基础教程(xml入门绝佳实例)

    **第一章 XML基础** XML的设计目标是传输和存储数据,而不是显示数据。它强调的是结构和语义,而不是外观。XML文档由元素、属性、实体、注释等构成。元素是XML文档的基本构建块,它们以尖括号包围,如`<element>`。...

    XML基础教程-电子教案

    在本“XML基础教程”中,我们将深入探讨XML的基本概念、语法、验证以及它在网络应用中的作用。 首先,让我们从“第1章 XML概述.ppt”开始。这一章将介绍XML的基本理念,包括为什么需要XML,它与HTML的区别,以及XML...

    xml基础教程PPT

    学习XML基础教程PPT,你将掌握XML的基本语法和应用,了解如何利用XML增强PPT的功能,以及如何进行数据的导入和导出。通过实践和源代码的学习,你能够更好地理解XML在实际项目中的作用,并能灵活地应用于各种场景。

    高职高专《XML基础》课件

    在高职高专的计算机应用、网络和数据库等专业中,XML基础课程是重要的知识模块,因为它在数据交换、数据存储、配置文件、Web服务等领域有着广泛的应用。 XML的主要特点包括: 1. **可扩展性**:XML的设计允许用户...

    XML基础教程第2版教学课件

    耿祥义教授编写的《XML基础教程》第二版,旨在深入浅出地介绍XML的基本概念、语法规范及其应用技术。下面将根据提供的压缩包文件名,详细阐述各个章节的知识点。 第一章:XML简介 这一章会介绍XML的起源,作为HTML...

    XML基础及实践开发教程(唐琳-主编)习题答案

    在本教程“XML基础及实践开发教程”中,唐琳主编结合丰富的教学经验,为学习者提供了深入浅出的XML理论知识与实践操作指导。以下是该教程可能涵盖的关键知识点: 1. **XML基本概念**:XML起源于HTML,但更注重结构...

    xml基础知识文档

    xml基础,xml语言的定义,xml的数据岛,xml结点的设置、获取。

    xml基础教程课件习题答案源代码

    这个“XML基础教程课件习题答案源代码”资源是为初学者提供了一个全面学习XML的平台,涵盖了理论知识、实践操作和问题解决。 1. **XML基础知识**:XML的设计目标是为了传输和存储数据,而不是为了显示数据。它通过...

Global site tag (gtag.js) - Google Analytics