学习笔记——JavaScript操作XML文件
来源:互联网 发布:淘宝被扣12分如何恢复 编辑:程序博客网 时间:2024/06/05 10:04
通过一个实例来具体了解关于JavaScript来操作XML文件特性
跨浏览器读取xml文件
<html><head><script type="text/javascript">function createDocument(){var xmlDoc;if(window.ActiveXObject)//IE中依靠ActiveXObject()对象和MSXML库来获取和打开xml文档{var versions=["Msxml2.DOMDocument.6.0",//MSXML库有多种版本,一般只检查这两个"Msxml2.DOMDocument.3.0"//优先新版 ];for(var i=0;i<versions.length;i++){try{xmlDoc=new ActiveXObject(versions[i]);//用ActiveXObject对象构造函数,return xmlDoc;//需要传入一个包含ActiveX对象版本的字符串}catch (error)//若创建ActiveX对象失败,则转入这里,但是什么也不做{//do nothing here}}}else if(document.implementation && document.implementation.createDocument){//适用于Firefox、Opera,依然不适用Safari和ChromexmlDoc=document.implementation.createDocument("","",null);return xmlDoc;}return null;}function getDailyMessage(){var messages=xmlDoc.getElementsByTagName("daily");//注意此处使用的xmlDoc在此函数中没有定义,那么来自哪里呢?//在HTML页面正文中定义的xmlDoc全局变量var dateobj=new Date();var today=dateobj.getDay();return messages[today].firstChild.nodeValue;}</script></head><body><div id="messageContainer"></div><script type="text/javascript">var xmlDoc=createDocument();//全局变量,同样用于getDailyMessage函数中xmlDoc.async=false;//解释见下面xmlDoc.load("motd.xml");document.getElementById("messageContainer").innerHTML=getDailyMessage();</script></body></html>
在实际操作xml文件之前,先确保该文档已经完全加载到客户端的浏览器缓存中。否则,脚本在xml文件
下载完成之前操作,会抛出JavaScript错误。
可以使用async避免这样的错误(通用方法)。
async属性表示浏览器下载页面其余部分之前,是否等待指定的xml文档下载完。这个属性表示
“异步(asynchronous)”。默认值是true,表示浏览器无需等待xml文档完全下载。因此只要我们将其值
设置为false,就可以避免前面的问题
在IE中可使用readyState属性
IE的xml对象和很多的HTML对象都有readyState属性,用于返回对象之前的加载状态。
readyState属性的可能的返回值如下:
1 //对象正在初始化,尚无任何可读数据,正在载入数据(loading)
2 //对象正在载入对象并解析(loaded)
3 //部分对象的数据已经读取并解析,因此对象模型是可用的。
//但是仍无法读取完整的对象数据(interactive)
4 //对象已经载入,内容已经完全解析完毕(completed)
在这里我们只需要关注一个等于4的状态就行了。
举例:
function xmlDoc_readyStateChange()
{
if(xmlDoc.readyState==4)alert("XML file loaded");
}
var xmlDoc=createDocument();
xmlDoc.onreadystatechange=xmlDoc_readyStateChange;
xmlDoc.load("myfile.xml");
在Firefox、Opera中使用onload
注意,在Firefox。Opera中不支持使用readyState来判断文档的加载状态,
而是在文件加载完,且DOM对象可用时,执行onload事件处理程序
举例:
function xmlDoc_load()
{
alert("XML is loaded");
}
var xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.onload=xmlDoc_load;
xmlDoc.load("myfile.xml");
在与上面HTML同文件夹下再建一个如下xml文件
<?xml version="1.0" ?><messages><daily>Today is Sunday</daily><daily>Today is Monday</daily><daily>Today is Tuesday</daily><daily>Today is Wednesday</daily><daily>Today is Thursday</daily><daily>Today is Friday</daily><daily>Today is Saturday</daily></messages>
- 学习笔记——JavaScript操作XML文件
- python学习笔记4——解析xml、文件操作
- javascript操作xml笔记
- javascript操作XML文件
- 学习笔记——JavaScript操作Cookie
- 学习笔记——JavaScript操作DOM
- JavaScript学习笔记——操作符
- OpenCV学习笔记(六)——对XML和YAML文件实现I/O操作
- OpenCV学习笔记(六)——对XML和YAML文件实现I/O操作
- OpenCV学习笔记——对XML和YAML文件实现I/O操作
- OpenCV学习笔记(六)——对XML和YAML文件实现I/O操作
- Swift 学习笔记——文件操作
- python学习笔记——文件操作
- PHP学习笔记——文件操作
- Python学习笔记 —— 文件操作
- Python学习笔记——文件操作
- php学习笔记5—(文件操作)
- Python学习笔记(1)—文件操作
- 编程之美-2.2、n阶乘的二进制表示中最低位1的位置
- Ubuntu下建立android源码及其内核开发环境
- JDBC中连接池的使用
- android 播放局域网共享多媒体文件
- 如何实战解决mysql#1366错误
- 学习笔记——JavaScript操作XML文件
- JS 改变函数中 this 的指向
- Linux应用程序使用的系统时间
- 算法设计与分析基础-4.2、快速排序
- DWR入门实例
- FeaturesMatcher
- 读书笔记之《七周七语言——理解多种编程范型》Ruby语言学习
- Juniper SSG-5-SH 新手配置手册
- 第四次课后作业