分享

XML DOM介绍

 冰山一角 2008-05-19

XML DOM介绍

 

一、XML DOM简介

DOMDocument Object Model,文档对象模型)是一种应用程序接口(API)的应用,它将文档(如XML文档,HTML文档等)看成是一个文档对象,然后通过程序语言(如JavaScript等脚本语言,C++等)调用该文档对象,对文档中的数据进行存取,并利用程序对获取的数据进行跟进一步的处理。

XML  DOM是将XML文档以DOM方式包装,通过DOM技术,应用程序即可很容易地提取XML文档中的数据。

 

 

二、XML DOM对象

     IE实现了对XML DOM技术的支持,提供了五个可以在脚本程序中调用的XML DOM对象:

(1)       XMLDOMDocument

该对象代表整个XML文档,它具有多种属性和方法来获取或创建其他XML DOM对象。

(2)       XMLDOMNode

          该对象可以代表XML文档的根元素以及根元素下的各个节点。它支持数据类型、名域、DTDSchema,并且以此扩展核心的XML DOM节点接口。

(3)       XMLDOMNodeList

该对象代表XML文档中一系列节点组成的一个节点列表,并且支持对该列表的遍历。

(4)       XMLDOMNamedNodeMap

         该对象支持名域和对属性集的遍历。

(5)       XMLDOMParseError

该对象用于返回最近一次解析错误的详细信息,包括错误号、错误所在行、错误所在字符位置以及对错误的一个描述文本。                           

 

三、XML DOM属性

XML DOM文档的遍历与HTML DOM的遍历非常类似,因为它们都是节点层次的结构。节点树的最顶部是documentElement属性,包含文档的根元素。使用下表中所列出的属性,可以访问文档中任何元素或属性。

4-1 XML DOM属性

   

   

attributes

包含当前节点属性的数组

childNodes

包含子节点数组

firstChild

指向当前节点的第一个子节点

lastChild

指向当前节点的最后一个子节点

nextSibling

返回当前节点的下一个邻居节点

nodeName

返回当前节点的名字

nodeType

指定当前节点的XML DOM节点类型

nodeValue

包含当前节点的文本

ownerDocument

返回文档的根元素

parentNode

指向当前节点的父节点

previousSibling

返回当前节点的前一个邻居节点

text

返回当前节点的内容或当前节点及其子节点的文本(只有IE才支持的属性)

xml

以字符串返回当前节点及其子节点的XML(只有IE才支持的属性)

 

四、XML DOM实例

     以下实例,讲解如何读取xml文件(支持IEFireFox),并访问节点中的信息:

 

XML文件:Example1.xml

 

<?xml version="1.0" encoding="gb2312"?>

<!--作为操作对象的XML文档-->

<根元素>

    <2>

        <3>我是第三层元素集合中的第1个元素</3>

        <3>我是第三层元素集合中的第2个元素</3>

    </2>

</根元素>

 

 

HTML文件:readXML.html

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www./TR/html4/loose.dtd">

<html>

<head>

<title>读取XML文件,并访问节点信息</title>

<script language="JavaScript" for="window" event="onload">

<!--

         function createDocument() {

      var aVersions = [ "MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",

                                                 "MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];

      for (var i = 0; i < aVersions.length; i++) {

         try {

             var oXmlDom = new ActiveXObject(aVersions[i]);

             return oXmlDom;//支持最新的版本

         } catch (oError) {

               // 不做任何处理

                    }

     }

     throw new Error("MSXML is not installed.");

    }

        

   

         var XMLdoc;

         var XMLroot;

        

         if(typeof(window.ActiveXObject) != ‘undefined‘){// 支持IE浏览器

         XMLdoc = createDocument();

              XMLdoc.async="false";

              XMLdoc.load("Example1.xml");

 

                    XMLroot=XMLdoc.documentElement;

         L2=XMLroot.childNodes.item(0);

                    L3_Node0=L2.firstChild;

              strA=L3_Node0.nodeName;

              strB=L3_Node0.text;

              Text0.innerText=strA+" "+strB;

 

              L3_Node1=L2.lastChild;

              strA=L3_Node1.nodeName;

              strB=L3_Node1.text;

              Text1.innerText=strA+" "+strB;

    }else if(document.implementation && document.implementation.createDocument){// 支持Mozilla Firefox浏览器

             

              XMLdoc = document.implementation.createDocument("", "doc", null);

                    XMLdoc.async="false";

              XMLdoc.load("Example1.xml");

                    XMLdoc.onload=function(){

              x=XMLdoc.getElementsByTagName(‘3‘);

              

                         L3_Node0=x.item(0);

                         strA=L3_Node0.nodeName;

                         strB=L3_Node0.childNodes[0].nodeValue;

                         document.getElementById("Text0").textContent=strA+" "+strB;

                  

                         L3_Node1=x.item(1);

                         strA=L3_Node1.nodeName;

                         strB=L3_Node1.childNodes[0].nodeValue;

                         document.getElementById("Text1").textContent=strA+" "+strB;

         }

         }

//-->

</script>

</head>

<body>

    <h3 align="center">读取XML文件,并访问节点信息<hr/></h3>

         <h4>第三层的的第一个节点:</h4>

         <div id="Text0" style="font-family:华文楷体;color:red;"></div>

    <h4>第三层的的第二个节点:</h4>

         <div id="Text1" style="font-family:黑体;color:blue;"></div>

</body>

</html> 


参考资料:《
XML网页开发实例教程》 机械工业出版社  尹泉等编著

          网上资料

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多