XML DOM对象
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文档的载入状态。状态值: |
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为处理指令值 |
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属性值改变时被触发 |