Microsoft的XML解析器是与IE5及IE5以上版本的浏览器整合在一起的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)
复制当前节点,flag为true,复制整个节点,为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)
取得ID为id的节点
parsed()
检查节点包括其子节点是否已被解析
removeChild(theNode)
删除节点的子节点theNode
replaceChild(newNode,oldNode)
以节点newNode替换节点oldNode
selectNodes(patternString)
取得所有匹配模式patternString的节点
selectSingleNode(patternString)
取得首个匹配模式patternString的节点
transformNode(styleSheet)
以样式表styleSheet来处理节点及其子节点
XML DOM事件
Ondataavailable
在XML文档有效时被触发
Onreadystatechange
在readyState属性值改变时被触发