• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

和X M L文档的内容和结构提供了标准函数。
5.1.1 XML文档结构
刚刚接触X M L的开发人员常常会认为X M L的主要目的是为文件中的信息片段命名,使之易
于被其他人理解。结果,这些新手开发的文档简直如同“标记汤”—无序的数据元素列表与
有意义的标记名称组合在一起,但是它与普通的文件一样都将信息置于同一层:
程序清单5 - 1
许多开发人员都忽略了X M L能够显示元素之间的关系这一特性—特别是表示两个元素的
父子关系。如果将上述文件改写为以下形式,将产生更好的效果:
程序清单5 - 2
在这种形式的文档中,发票元素显然包括四个行式项目子元素。它还简化了文档的搜索—
如果我们要寻找钚的所有订单,可以查询P R O D U C T属性值为“P l u t o n i u m”的L I N E I T E M元素—
而不必依次查看每个P R O D U C T元素。
以上文档结构可以用图5 - 1中的节点树表示,它显示了所有元素以及它们之间的相互关系。
如果要给文本文件中的发票增加行式项目,必须读取文件直至发票的最后一个行式项目的
末尾,插入新的行式项目文本,然后继续处理文档的后续部分。正如你所料,这种技术很快会
变得非常棘手,特别是当节点树变得越来越深时。然而,如果你能够根据树结构以节点形式对
文档进行操作,添加行式项目就轻而易举了—只需创建新的L I N E I T E M节点,并将它作为
I N V O I C E节点的子节点。
图5-1
这就是D O M的工作原理。
当你使用D O M对X M L文本文件进行操作时,它首先要解析文件,将文件分解为独立的元素、
属性和注释等。然后,它以节点树的形式(在内存中)创建X M L文件的表示。此后,开发人员
可以通过节点树访问文档的内容,并根据需要修改文档。
事实上, D O M执行了更进一步的操作,它将文档中的每个项目看作节点—元素、属性、
注释、处理指令,甚至构成属性的文本。因此,对于我们上面的例子, D O M实际上会将文档表
示为图5 - 2所示的形式。
112使用XML 高级编程
下载
D O M提供了强大的接口集合,以简化对D O M节点树的操作。
图5-2
5.1.2 为何使用DOM
提到访问X M L文件,D O M永远只能算作可选的访问方法之一。与其他用于产生X M L文档的
机制相比,例如:直接向一个流写入,使用D O M有以下几点优越性:
• DOM能够保证正确的语法和格式正规性。
• DOM能够从语法中提取内容。
• DOM能够简化内部文档操作。
• DOM能够贴切地反映典型的层次数据库和关系数据库的结构。
让我们依次分析这几个优点。
1. DOM能够保证正确的语法和格式正规性
由于D O M将文本文件转化为抽象的节点树表示,因此能够完全避免无结束标记和不正确的
标记嵌套等问题。使用D O M操作X M L文档时,开发人员不必担心文档的文本表示—只需要关
注父子关系和相关的信息。另外, D O M能够避免文档中不正确的父子关系。例如,一个A t t r对
象永远也不能成为另一个A t t r对象的父对象。
2. DOM能够从语法中提取内容
由D O M创建的节点树是X M L文件内容的逻辑表示—它显示了文件提供的信息,以及它们
之间的关系,而不受限于X M L语法。例如,节点树蕴含的信息可以用于更新关系数据库,或者
第5章文档对象模型使用113 下载
文档元素: INVOICE
属性: C U S TO M E R
属性: A D D R E S S
属性: C I T Y
属性: STATE
属性: Z i p
元素: LINEITEM
元素: LINEITEM
元素: LINEITEM
元素: LINEITEM
属性: UNITS
属性: PRODUCT
属性: UNITS
属性: PRODUCT
属性: UNITS
属性: UNITS
属性: PRODUCT
属性: PRODUCT
文本: "142 Evergreen
Terrace"
文本: "Springfield"
文本: "VA"
文本: "00000"
文本: "Plutonium"
文本: "10"
文本: "Donuts"
文本: "937"
文本: "Beer"
文本: "1028"
文本: "Peanuts"
文本: "1"
文本: "Homer J.
Simpson"
创建H T M L页面—开发人员不必纠缠于X M L语法规范。
3. DOM能够简化内部文档操作
就修改X M L文件的结构而言,使用D O M比使用传统的文件操作机制更加简单。正如我们在
前面的例子中所描述的,利用D O M在文档中增加元素非常简便。另外,你可以通过几条命令执
行全局性操作(例如:从文档中删除具有特定标记名称的所有元素),而不必采用繁琐的方法
—首先对文件进行扫描,然后删除相关的标记。
4. DOM能够贴切地反映典型的层次数据库和关系数据库的结构
D O M表示数据元素关系的方式非常类似于现代层次型和关系型数据库表示信息的方法。这
使得利用D O M在数据库和X M L文件之间移动信息变得相当简单。
大部分数据库都使用“雪花”结构表示层次型信息,数据库中的信息从中心“顶级”表向
外辐射,类似于车轮的车条(参见图5 - 3)。
图5-3
注意,每个客户可能有多张发票,而且每张发票可能包含多个行式项目。为了支持这种行
为,X M L允许我们包含一个子元素的多个拷贝。上图中的每个元素基本上都对应着一张表,每
张表都包含多列(这些列在X M L中作为属性出现)。
上图的结构等价于以下X M L文件:
程序清单5 - 3
114使用XML 高级编程
下载
利用D O M建立文档的树结构简化了系统之间的信息传递。
5.1.3 DOM规范
与其他I n t e r n e t标准一样, D O M规范也是由W 3 C维护的。在编写本书时, W 3 C提出了两个
D O M文档—Level 1和Level 2文档。
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(48)