posted @ 2005-02-24 23:03 laogao 阅读(242) | 评论 (0) | 编辑 收藏
posted @ 2005-02-24 22:55 laogao 阅读(293) | 评论 (0) | 编辑 收藏
posted @ 2005-02-24 22:42 laogao 阅读(267) | 评论 (0) | 编辑 收藏
posted @ 2005-02-24 22:13 laogao 阅读(275) | 评论 (0) | 编辑 收藏
posted @ 2005-02-24 21:31 laogao 阅读(294) | 评论 (0) | 编辑 收藏
XML文档只能以文本文件的形式存在吗?错。
常见的XML存储形式有:
以文本形式储存XML数据当然在很多情况下是适用的,也是我们最常看到的XML存储方式,因为我们在J2EE中接触最多的就是XML的配置文件嘛,如果不是文本的,我们改起来是不是就有点别扭了?只不过文本的东西每次用的时候都需要做转换,影响到执行的效率罢了。所以通常我们在做项目时也会用一些自动化的工具将我们的XML在系统运行或调试前做一些转换。
这样看,我们还真的不能想当然了。
posted @ 2005-02-19 22:52 laogao 阅读(248) | 评论 (0) | 编辑 收藏
XML的另一个重要的应用是数据操作。
就数据操作而言,一个基本的概念是XPath,XPath是一种语言,用于通过某种文本形式的途径表示XML文档中的元素或者另一个XML文档等等,基于XPath,我们才能够在XML中相对方便的引用到相关的内容,以致使用到XSLT这样的东东。
为什么会有这样的语言?因为在很多时候XML文档所代表的数据是相互关联的,而并非独立的一个一个元素和文档,XPath等语言使得很多高级的操作得以简单的完成。
posted @ 2005-02-19 22:45 laogao 阅读(254) | 评论 (0) | 编辑 收藏
由于XML的平台和技术独立性,它经常被用来在不同的系统之间传递消息,基于XML这一特性而产生的常见的技术和规范包括:SOAP、Web Services、UDDI和WSDL。
SOAP的全称是Simple Object Access Protocol,它定义了一类XML如何创建、打包和传送,可以直接通过HTTP方式同步或异步的传递;Web Services在很大程度上依赖于SOAP;UDDI相当于在网上存储和共享Web Services的位置信息,供使用者在需要调用某个Web Service时查询;而WSDL是Web Services Dercription Language的缩写,用于在UDDI上描述Web服务。
posted @ 2005-02-19 22:33 laogao 阅读(349) | 评论 (0) | 编辑 收藏
作为W3C推出的拳头标准,XML的强大优势之一就是它可以方便的被转换成其他格式的XML或者其他不同类型的文件,如PDF、HTML等都是常见的XML转换的输出格式。
为了实现这个功能,我们需要利用到eXtensible Stylesheet Language for Transformations (XSLT)。XSL文件是这样一些样式表,它们指定如何从一个XML文件转换出其他的格式。这个是不是多少让你想起MFC的文档-视图结构或者MVC模式?
posted @ 2005-02-19 22:20 laogao 阅读(264) | 评论 (0) | 编辑 收藏
为了让XML文档能够被应用程序识别和处理,必须提供一个读取XML文档的途径。当然,你也许会说,XML不就是文本文件吗?我用java.io包不就可以读取了?XML文件并非简单的plain text,它有自己的结构和描述性,我们需要在基本的I/O之上更进一步。常见的XML读取有两种不同的方式:SAX和DOM,下面我们分别来看一下:
SAX是Simple API for XML的缩写,顾名思义,就是处理XML的简单API,就象它的名字所暗示的那样,SAX比DOM要简单直接得多。本质上讲,SAX是事件驱动的,比如,当读取XML文件到一个标签的结尾时,该事件被传递到应用程序,应用程序做出相应处理,于是,应用程序在这个时候只知道已经读取的那一部分内容,而对剩下的XML数据一无所知。这正是SAX的局限,同时,因为SAX是读一部分处理一部分,它的速度相当快。
DOM是Document Object Model的缩写,文档对象模型,这个名字听上去就要更抽象一些,它是一次性把整个XML文档读取完毕然后构件一个完整的树状对象模型,于是它的速度要比SAX慢很多,但是对XML文档整体就有一个更加完整的视图,这在有些时候是必需的。
通常我们使用的XML API都同时支持这两种模式,在遇到具体问题时,我们可以根据文档的复杂度、规模、以及我们的需求来确定到底使用哪一种模式。
posted @ 2005-02-19 22:00 laogao 阅读(602) | 评论 (0) | 编辑 收藏
为了使得我们定义的XML文档有意义,我们通常必须为它定义一组语法,如:这个文档应该包含那种类型的数据,这种数据的层次结构又是怎样的,等等。这样我们的XML文档就可以通过专门的工具来验证其合法性。
有两种方式:I- DTD (document type definition); II- XSD (XML Schema definition),我们分别来看一下。
DTD比较简单和直截了当,它可以很容易的定义元素和元素之间的隶属关系,如:
<!ELEMENT>用于定义元素,同时可以定义该元素是否包含其他元素,<!ATTLIST>用于定义元素的属性,具体的语法可以参考http://www.w3c.org/xml/ 上的文档。为了把我们的XML文档和上面定义的语法联系到一起,我们需要在XML中加入这样一行代码:
与DTD类似,XSD也是通过一些规则来定义一类XML的语法,它比DTD更加灵活,也更加强大,是目前W3C主推的XML验证标准。它通过一些命名空间已经定义好的元素类型来定义我们的XML语法,如:
这里的xsd就是我们要用到的名字空间。由于目前大部分的XML还都是使用DTD的方式,对XSD的了解就到这里吧。有兴趣的可以去W3C的网站了解具体语法。
posted @ 2005-02-19 20:28 laogao 阅读(336) | 评论 (0) | 编辑 收藏
XML的用途可谓相当广泛,这归功于它的开放性和强大的描述能力。在接下来的笔记中,我会记录如下几个方面的内容:
posted @ 2005-02-19 20:17 laogao 阅读(238) | 评论 (0) | 编辑 收藏
XML是eXtensible Markup Language的缩写,它的前身是SGML,或者说,XML是SGML的子集。简单讲,XML是一种文档格式,作为一种标准,有利于不同机构间的数据交换。从表面上看,XML是一种语言,但是它同时也是一种创造和定义其他语言的语言。通过一组定义好的规范,我们可以很方便的扩展它。
我们来看一个实际的XML长什么样:(仅仅是个最简单的例子,为了说明XML的基本结构)
直观的看,我们这个XML文件定义了一组客户,每一个客户又有相应的ID、姓名、注册时间和到访次数。这就是一个最基本的XML,它很类似HMTL,但是一方面它可以有自定义的标签,另一方面它也要求更加严格的语法,如标签必有开闭且不能重叠等。不仅仅是这样,通常每个XML文件都会对应一组严格定义的语法,以便对它们进行正确的处理,这一点我会在稍后作更详细的说明。
posted @ 2005-02-19 20:10 laogao 阅读(255) | 评论 (0) | 编辑 收藏
开发出IntelliJ IDEA的JetBrains公司出品的Omea Reader是一款RSS阅读器,在3月31日之前,JetBrains提供免费的1.x版本永久注册码,需要经常性阅读RSS新闻的朋友又多了一个不错的选择。
在JetBrains的官网上可以下载最新版和获取注册码:
http://www.jetbrains.com/omea/download/reader.html
posted @ 2005-02-18 16:13 laogao 阅读(258) | 评论 (0) | 编辑 收藏
作为J2EE的开发者,其实我们每天都面对着各种各样的XML文件及应用,可以说XML几乎成了我们的家常便饭,从ANT的build.xml到Web Server的web.xml到Struts框架的struts-config到EJB应用的ejb-jar.xml到持久层框架如SQLMaps再到RPC中的消息传递,XML已经渗透到了我们平常开发工作的每一个角落,这一事实充分说明了XML强大的功能和生命力。(XML的应用范畴当然远不止这些J2EE的东东)
然而我们真正了解XML有多少?也许我们并没有真正思考过这样的问题,通常我们只是学学某类XML配置文件的写法,然后依葫芦画瓢,仅此而已,甚至在某些情况下我们可以直接通过图形界面或自动化工具生成所需的XML文档。当我发现自己虽然做了近4年Java但其实对XML知之甚少时,首先是惊讶,然后汗颜,再后来我就想,索性把XML的基础拿来从头温习一下,于是就有了你现在看到的blog文章。
基本上,我会记录最基础的XML概念和用法,用尽可能简单明了的表达方式让自己和大家一起对XML重新来过。这些基本的东西清楚以后,我们再回过头来看我们日常接触到的XML,定当有一些更深入的认识。
本学习笔记大致上将分为三块:I - XML的基本概念,II - XML的用法/用途,III - Java中用于处理XML的API。我将不定期更新本专题。
posted @ 2005-02-17 23:25 laogao 阅读(298) | 评论 (0) | 编辑 收藏
Powered by: BlogJava Copyright © laogao