以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  Xml document object module(DOM)学习总结  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=27992)


--  作者:世世无忧
--  发布时间:3/1/2006 11:23:00 PM

--  Xml document object module(DOM)学习总结
以下是我学DOM时的一些总结,发给大家看看,也许对初学者有帮助。
在 [URL=http://blog.sina.com.cn/u/1182216592]我的blog[/URL] 里也有一些别的,欢迎光临!
---------------------------------------------
Xml document object module(DOM)
文档对像模型是一个独立于作业平台、独立于语系的接口。DOM是相关于文档的一系列对象列表,通过操作这些对象,可以对xml和html文档进行读取、遍历、修改、添加和删除。
IE实现了dom level 1。且对其进行了功能扩展,提供了其它接口来支持xsl、xsl partterns、命名空间和数据类型。
在DOM中最基本的对象是Node,从Node中又派生出了几种具体的节点类型。对应于xml中各种相应的节点。
在使用DOM加载XML文档后,在内存中形成一个节点树,由XML各种节点形成各种对象模型组成。这些对象包括相应的属性、方法,以对数据进行操作。
几个基本的对象:
1. document
这个对象参照到整个文档,是对文档操作的入口。
2. element 和attribute
这是文档中的某一部分的映射,节点的层次,反映了文档的层次。
3. text
这是element或属性节点的内容,不再包括子元素。
DOM中的所有节点,都是从NODE节点继承而来的,它包括一些基本的属性与方法,通过这些属性和方法,可以对文档遍历,还可以取得节点的名称、取值和类型。它将XML中的所有项目看成节点:元素、属性、文本、注释、处理指令等。

文档的创建和加载:

首先,创建一个document对象,对于不同的语言,创建的语法不同:
VB script:
 set doc = createobject("microsoft.xmldom")
js script:
 var doc = new activeXobject("microsoft.xmldom")
创建一个document对象之后,用两个方法来加载XML文档。load()用来加载xml文档,loadxml()方法用来xml文档片段。
文档的遍历:
 得到xml文档中的节点主要有两个方法:nodeFromID() 和 getelementsbytagname()
 如果要得到文档的根节点,用documentElement属性就可以参照到根节点。
 任何一个子节点的ownerDocument属性,可以参照到document节点,即文档本身。
 节点的parentNode属性,参照节点的父节点。
 节点的childNodes属性,参照节点的所有子节点。
 
节点的创建:
 可以用document对象来创建文档中的各种类型的子节点,通常的函数形式是:createElement()、createTextNode()这样的形式。然后
在需要加入节点的父节点上调用appendChild()函数,或调用insertBefore()函数在相应的位置加入节点。
节点的删除与替换:
 首先,通过需要删除的节点的parentNode属性,来调用它的父节点,然后调用父节点的removeChild()方法,来删除子节点;或调用父
节点的replaceChild()方法,来替换某个子节点为新节点。

InodeList接口:
 这个接口由nodeList对象来实现,这是一个有顺序节点的集合。其内容或者是一个节点的子节点,使用节点的selectNodes()方法;或
者是某个函数的返回值:如getNodebyName()。其集合内容是动态的,比如其内容是一个节点的子节点,然后又对子节点进行删除、增加等操作
,所做的改动会自动反映到nodelist集合,不需要重表取得该集合。它有两个重要的属性:length,取得集合的长度,item(index)取得集合
index处的节点对象。

namedNodeMap对象:
 这个对象是一个命名节点的无顺序的集合,常用在属性节点中,它可以用index来访问相应位置上的节点对象,也可以使用名称来进行
各种操作,如:nextNode()、reset()、getNamedItem()、item()、removeNamedItem()、setNamedItem()。他也有length属性,访问集合的长
度。从0开始。可以使用节点的attributes属性来得到一个nameNodeMap对象。


--  作者:ezysky
--  发布时间:3/3/2006 5:23:00 PM

--  
世世兄,关于XML的问题,在你读取XML文件并转换为DOM之后,你怎么把DOM的信息转换为自己的对象的?一般有那些方法?
--  作者:世世无忧
--  发布时间:3/3/2006 7:22:00 PM

--  我没太明白你的意思
转换成自己的对象?能具体说一下吗?什么对象?
--  作者:bruceshen
--  发布时间:6/16/2006 9:56:00 AM

--  
学到了点函数,具体的体现还没有多少概念!望多给些例子
--  作者:ydiandian
--  发布时间:7/7/2006 12:58:00 PM

--  
先顶哈,回家后来问点问题
--  作者:zuhause
--  发布时间:7/28/2006 4:06:00 AM

--  
学习了!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
156.250ms