XML DOM对象

来源:互联网 发布:新浪博客怎么绑定域名 编辑:程序博客网 时间:2024/05/17 22:10

XML DOM对象

MicrosoftXML解析器是与IE5IE5以上版本的浏览器整合在一起的COM组件,安装了IE浏览器,就可以使用解析器解析XML文档了。但MSXML现在已经有五个不同的版本,所以在创建XMLDOM的时候最好使用工厂模式。
function createDocument()
{
var aVersions = [
"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 XmlDoc = new ActiveXObject(aVersions[i]);
return XmlDoc;
}
catch(oError){}
}
throw new Error("MSXML is not installed");
}
var XmlDoc = createDocument();
创建完XML文档对象后,就要将XML文档载入解析器。例:
(1)
使用load()方法载入一个XML文档
var xmlDoc = new createDocument();
xmlDoc.async = "false"; //
表示非异步载入,确保XML解析器在把XML文档完全载入以前不会对XML文档进行解析
xmlDoc.load("booklist.xml");
(2)
使用loadXML()方法载入XML代码片段
var strtemp = "Ajax$5.95";
strtemp += "Foundations of Ajax.";
strtemp += "Ajax atterns$5.95";
strtemp += "Introduction of Ajax Patterns.";
xmlDoc.loadXML(strtemp);

XML DOM对象属性

属性

描述

async

设置或获取是否允许以异步方式载入XML文档

attributes

获取节点的属性列表

childNodes

获取节点的子节点列表

doctype

获取与文档关联的文档类型声明,不包含声明则返回null

documentElement

获取在根节点中包含数据的对象,如果文件中不具有唯一根节点,返回null

firstChild

获取节点中的首个子节点,如果不具有子节点则返回null

lastChild

获取节点中的末个子节点,如果不具有子节点则返回null

nextSibling

获取节点所在的节点列表中下一个节点

nodeName

获取节点的名称

nodeType

获取节点的类型,(参见下表)

nodeValue

获取文本节点值

ondataavailable

设置处理ondataavailable事件的函数

onreadystatechange

获取处理onreadystatechange事件的函数

parentNode

获取节点的父节点,如果不具有父节点则返回null

parseError

获取DOM解析错误对象,此对象描述最后解析错误的信息

previousSibling

获取节点所在的节点列表中上一个节点

readyState

获取XML文档的载入状态。状态值:
0-UNINITIALIZED:XML DOM
对象已声明,但未初始化
1-LOADING:
文档载入中,但未开始解析
2-LOADED:
部分文档已经加载且进行解析,但对象模型尚未生效
3-INTERACTIVE:
对已加载的部分文档有效,此时对象模型是有效但只读的
4-COMPLETED:
文件已完全加载,加载成功

url

传回最近一次加载XML文档的URL。若文档不由外部载入则返回null

validateOnParse

告诉解析器文件是否有效

xml

获取节点的XML描述和所有的子节点

Node节点类型说明

Document

文件阶层中的根节点(DOM树的根节点)

Element

一个元素

Attr

一个属性,注意:属性与其它节点类型不同,它们不是同一父节点的子节点

ProcessingInstruction

处理指令

Comment

注释

Text

处于一个元素或一个属性中的文本内容(字符数据)

CDATASection

一块包含字符的文本区

Entity

实体

XML DOM对象方法

abort()

取消一个正在执行的异步下载

appendChild(newNode)

在当前节点末端添加一个子节点newNode

cloneNode(flag)

复制当前节点,flagtrue,复制整个节点,为false则只复制该节点及属性

createAttribute(attrName)

创建属性attrName

createCDATASection(data)

创建包含指定数据的CDATA

createComment(data)

创建包含指定数据的注释

createDocumentFragment()

创建空的文档片断

createElement(tagName)

创建元素tagName

createEntityReference(name)

创建名称为name的实体参照

createNode(type,name[,nsURL])

创建新节点,type为节点类型,name为节点名称,nsURL为命名空间

createProcessingInstruction(
target,data )

创建处理指令,target为目标、名称或处理指令字符串,data为处理指令值

createTextNode(data)

创建文本节点,data为内容

getElementsByTagName(tagName)

获取标记为tagName的元素集合

hasChildNodes()

检查节点是否含有子节点

insertBefore(newNode,theNode)

在节点theNode前插入新节点newNode

load(url)

载入url指定的一个XML文档

loadXML(xmlString)

载入xmlString指定的XML代码片段

nodeFromID(id)

取得IDid的节点

parsed()

检查节点包括其子节点是否已被解析

removeChild(theNode)

删除节点的子节点theNode

replaceChild(newNode,oldNode)

以节点newNode替换节点oldNode

selectNodes(patternString)

取得所有匹配模式patternString的节点

selectSingleNode(patternString)

取得首个匹配模式patternString的节点

transformNode(styleSheet)

以样式表styleSheet来处理节点及其子节点

XML DOM事件

Ondataavailable

XML文档有效时被触发

Onreadystatechange

readyState属性值改变时被触发