我想说说我自己对XML这门语言的看法,从自己以前的学习过程中,XML感觉就像是上帝的一点光,总是会引领着IT技术的发展。
XML是当今十大软件技术之一,它是一种数据交换模式,并且具有跨语言,跨平台的强大功能,通过它不同系统和不同程序之间可以进行无二性的交互数据,另外它还能作为一种层次型数据库进行使用,有效的保存数据,并且能够存储其数据关系,它是把数据和格式相互分离的一种先进技术。
概念其实也不用多讲了,在当今IT流中,XML起着举足轻重的作用,用推动IT流的前进这句话来形容它其实一点也不过分。无论是在数据交换,内容管理,WEB应用,WEB集成等领域都有着一席之地。
XML其实本身就是一个文本文件,很多人用它与RDBMS做比较,为什么XML如此的流行,是因为在数据库的使用当中,如果的对数据库进行直接操作,是由厂商自己所完成,每个厂商都不一样,所以是具有保密性,要想访问到对应的数据库,那么就得拥有对应厂商的驱动程序。而XML不一样,它只是一个文本文件,任何人都可以通过解析技术对它进行解析,所以从另外一方面来说,XML得益于另类开源这个词。可以这样说,全世界任何一门高级语言都可能会用到XML。总之,在XML中,存储小量数据,并且能够表示非常复杂的数据之间的关系。
提到XML,可能很多人都会联想到相关的5个技术::校验技术,解析技术,查询技术,链接技术,转换和显示技术。这5个技术中校验和解析是由为重要的,先说一说XML的校验技术,对应的两种检验语言,DTD和XML Schema,随着时代的不断更新,目前来说DTD已经逐渐退出历史舞台了,取而代之的则是schema,但是我想说的是,如果把校验技术学的很好,那么就要必须得学好DTD,而不是把schema放在重点上,因为现在来说schema已经可以用软件工具自动生成代码了,实际开发是相当方便的。为什么要学习DTD呢,为什么要学习一个已经快要退出IT舞台的语言呢,其实内容很简单,在schema中很多地方其实是只有学习过DTD的人才能看的懂的,非常重要的一点则是schema和DTD出现的错误信息都是DTD格式的,如果没有DTD的基础,是不可能看懂这些错误信息的,那么出现错误之后将对调试毫无办法。
DTD和schema其实都是约束XML文档的一种约束模式语言,而现在之所以schema更好,是因为他对XML文档的约束能力更加强大,更加的精确,定义的数据类型更加的丰富,如果两者之间进行比较的话,就我个人而言,觉得DTD才是关键,因为原始,所以根本,当然schema也是非常优秀的,只是要学习schema,个人觉得首先应该掌握好DTD。
一个很明显的事实:通过驱动程序去访问数据库,而通过解析技术去访问XML,如何做到这些,太多太多的高手写过相关的太多太多的技术了。对于JAVA来说,从JAXP的DOM,SAX到JDOM,再到DOM4J,小小的文本文件拥有了大量的技术来对其进行解析。其实不要看XML文件只是一个文本,正因为他存储的数据关系复杂,所以对它的解析是比较困难的。解析其实就是读取文件,然后将文本文件分解成可以解析的元素的过程。SUN公司在早期定义的DOM接口和SAX接口,虽然因为复杂,我们已经基本不使用他们了,但是我们应该去了解一下他们背后的故事。
DOM是一种树状模型的API,通过这个API我们可以对XML文档进行解析,DOM解析的方式是:一次性的把XML读入到内存当中,然后进行解析,这种解析方式对定位节点是非常方便的,因为在内存中整个XML文档都已经存在,所以某个节点与其他节点之间的关系就是相当明确的,并且可以进行数据的修改,但是这种解析方式有明显的缺陷,就是不能解析大型的XML文档,当XML文档过大,那么就会造成内存泄漏,因为DOM太消耗内存了。
另外一个则是SAX,它是simple API for XML的简称,从名字上来说,其实SUN公司是把它定义成一种更为简单的访问XML的方式,但是其实一点也没能得到简化,同样的与DOM一样是属于非常复杂的解析方式,不同于DOM,它的解析方式则是一种事件驱动模型,在这种模式当中,通过回调机制来通知节点的位置,这个解析方式是按顺序一步一步的来读取XML文档,然后进行解析的,优点则是可以读取较大型的XML文档,内存占用率小,但是仍然具有明显的缺陷:只能按顺序来进行解析XML,不能进行随机访问,这个是非常不方便的,也就是定位节点不方便,另外存在只读的功能,也就是说我们不能通过SAX来进行数据修改,并且在解析过程中,我们对XML文档的每个元素的遍历也只有一次。
因为DOM和SAX对XML的解析步骤是相当复杂的,所以才有了JDOM这种新型的解析技术,随后又出现了优秀的解析XML文档的技术:DOM4J。对这两种技术我感触颇深,简单的来说JDOM是面向过程的,而DOM4J则是面向对象的,这样说其实很抽象,我们可以来看一看这个例子:
这里有2个节点,A和B,用JDOM的方式是我们开发人员用自己 的方式把A+B拼接起来,然后再放入XML文档中,而其实放入到文档当中的这个步骤是我们开发人员来完成,也就是A+B+XML。
如果用DOM4J来干这件事情的话,则是调用元素的ADD方法,来进行添加,这个ADD并不是我们自己去完成的,而是对象本身自己去完成的,怎么完成的其实我们并不知道,也就是A.add(B),xml.add(A),所以这是一种面向对象的解析方式。
相关的XML的东西太多太多,而且非常复杂又充满了神奇的力量,个人认为,XML是IT流中的一朵奇葩,就算以后会被一种新的技术所取代,但是它留下的那些脚印,永远是不可磨灭的。这只是我个人的一些对XML的看法,仅次而已。
分享到:
相关推荐
关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml...
有关于xml实验xml实验有关于xml实验xml实验有关于xml实验xml实验有关于xml实验xml实验有关于xml实验xml实验有关于xml实验xml实验有关于xml实验
使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....
xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
网上找的解析xml文件的demo,自己拷贝了过来然后试了试,最后我觉得字数应该是够了。
xml手册xml手册xml手册xml手册xml手册xml手册xml手册xml手册
xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验xml实验
易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码
tinyxml与tinyxml2两个版本的源码,操作xml很方便,解压可以直接使用.
关于Delphi7读取保存XML 读取XML,修改节点,保存XML的一个完整实例。
无废话XML 无废话XML 无废话XML 无废话XML 无废话XML
动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...
C++读xml,包括读XML,写XML,让你完全了解XML。C++读xml,包括读XML,写XML,让你完全了解XML。C++读xml,包括读XML,写XML,让你完全了解XML。C++读xml,包括读XML,写XML,让你完全了解XML。C++读xml,包括读XML...
利用pugixml 转化xml为string
Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件
pugixml读写XML示例 pugixml读写XML示例 pugixml读写XML示例
动态datagrid xml动态datagrid xml动态datagrid xml动态datagrid xml动态datagrid xml
tinyxml 读写xml方法,简单易用!
主要介绍了Maven pom.xml与settings.xml详解的相关资料,这里对pom.xml与setting.xml详细的研究说明,需要的朋友可以参考下