暂时无题

还没想到

XMLDOM初学笔记(二)

【本文是在阅读www.w3school.com.cn的教程时随手记下的内容,以免遗忘】

 

解析 XML

所有现代浏览器都内建了用于读取和操作 XML XML 解析器。

解析器把 XML 读入内存,并把它转换为可被 JavaScript 访问的 XML DOM 对象。

微软的 XML 解析器与其他浏览器中的解析器是有差异的。微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都含有遍历 XML 树、访问、插入及删除节点的函数。

通过微软的 XML 解析器加载 XML

微软的 XML 解析器内建于 Internet Explorer 5 及更高版本中。

下面的 JavaScript 片段把 XML 文档 ("books.xml") 载入了解析器:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 

xmlDoc.async
="false"

xmlDoc.load(
"books.xml"); 


代码解释:

  • 第一行创建空的微软 XML 文档对象
  • 第二行关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本
  • 第三行告知解析器加载名为 "books.xml" 的文档

下面的 JavaScript 片段把名为 txt 的字符串载入解析器中:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 

xmlDoc.async
="false"

xmlDoc.loadXML(txt); 


注释:loadXML() 方法用于加载字符串(文本),而 load() 用于加载文件。

Firefox 及其他浏览器中的 XML 解析器

下面的 JavaScript 片段把 XML 文档 ("books.xml") 载入了解析器:

xmlDoc=document.implementation.createDocument("","",null); 

xmlDoc.async
="false"

xmlDoc.load(
"books.xml"); 


代码解释:

  • 第一行创建空的 XML 文档对象
  • 第二行关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本
  • 第三行告知解析器加载名为 "books.xml" 的文档

下面的 JavaScript 片段把名为 txt 的字符串载入解析器中:

parser=new DOMParser(); 

xmlDoc
=parser.parseFromString(txt,"text/xml"); 


代码解释:

  • 第一行创建一个空的 XML 文档对象
  • 第二行告知解析器加载名为 txt 的字符串

注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象。

解析 XML 文件 - 一个跨浏览器的实例

下面的例子把 XML 文档 ("books.xml") 载入 XML 解析器:

<html> 

<body> 

<script type="text/javascript"> 

try //Internet Explorer 



xmlDoc
=new ActiveXObject("Microsoft.XMLDOM"); 

}
 

catch(e) 



try //Firefox, Mozilla, Opera, etc. 



xmlDoc
=document.implementation.createDocument("","",null); 

}
 

catch(e) {alert(e.message)} 

}
 

try 



xmlDoc.async
=false

xmlDoc.load(
"books.xml"); 

document.write(
"xmlDoc is loaded, ready for use"); 

}
 

catch(e) {alert(e.message)} 

</script> 

</body> 

</html> 


加载函数

XML DOM 含有遍历 XML 树以及访问、插入、删除节点的方法(函数)。

然后,在访问并处理 XML 文档之前,必须把它载入 XML DOM 对象。

上一节演示了如何加载 XML 文档。为了避免因加载文档而重复编写代码,可以把代码存储在一个单独的 JavaScript 文件中:

function loadXMLDoc(dname) 



try //Internet Explorer 



xmlDoc
=new ActiveXObject("Microsoft.XMLDOM"); 

}
 

catch(e) 



try //Firefox, Mozilla, Opera, etc. 



xmlDoc
=document.implementation.createDocument("","",null); 

}
 

catch(e) {alert(e.message)} 

}
 

try 



xmlDoc.async
=false

xmlDoc.load(dname); 

return(xmlDoc); 

}
 

catch(e) {alert(e.message)} 

return(null); 

}
 

posted on 2008-06-28 10:44  张少峰  阅读(319)  评论(0编辑  收藏  举报

导航