1、XML运行在服务器端,通过load() 方法载入XML外部文件,并和其域名在同一台服务器上的XML文件,加载文件的两种模式,一种是同步,另一种是异步。

XML默认使用的异步加载

 

【同步加载】

一根线原理,加载完XML文件之后,才可以加载其他的代码,

坏处:如果加载数据停止响应或延迟太久,会导致堵塞,行成假死状态。

 

【异步加载】

多根线原理,加载XML文件的同时,会加载其他的代码。

坏处:只针对XMl文件,如果XMl文件没有加载完,就不会打印出来。

 

例:使用异步加载

var xmlDom = creatXmlDom();
xmlDom.load('demo,xml');
alert(xmlDom.xml);    
// 若弹出空白,原因是因为demo,xml还未加载完,就打印序列化

例:使用同步加载

var xmlDom = creatXmlDom();
xmlDom.async = false;    // true为异步加载,false为同步加载
xmlDom.load('demo.xml');
alert(xmlDom.xml);
//可打印序列化字符

 

总结:开发时使用默认的异步加载较好。

 

 

2、使用异步加载的同时,如果xml文件未能加载完,有时会获取不到xml的信息,对此,判断xml文件是否加载完成,使用xmldom中的 readystatechane 事件。

 

xmlDOM中的 readystatechange 事件

就绪状态

说明

1

DOM正在加载

2

DOM已经加载完数据

3

DOM已经可以使用,但某些部分无法访问

4

DOM已经完全可以

PS:readyState可以获取就绪状态

 

例:

var xmlDom = creatXmlDom();   //接上文判断系统是否支持MSXML库
xmlDom.async = true;   //值设为true,默认使用异步加载
xmlDom.onreadystatechange = function(){
  if(xmlDom.readyState == 4){
    alert(xmlDom.xml);
  }else{}
}
xmlDom.load("demo.xml");

PS: onredaystatechange 事件的代码必须放在load()的方法前面,并且这个事件里面不可以使用this,原因是this指向的是window。

 

 

3、parseError属性对象:若xml文件里面的标签或者内容输入不正确,则使其进行解析错误。

parseError属性对象

属性

说明

errorCode

发出的错误类型代号

filepos

错误文件的位置

line

错误文件的所在行号

linepos

错误文件所在行内的字符位置

reason

错误的解析信息

PS:若都没有错误,则pareseError的值是0

 

例:

var xmlDom = creatXmlDom();
xmlDom.async = true;
xmlDom.onreadystatechange = function(){
  if(xmlDom.readyState == 4){
    fi(xmlDom.parseError == 0){
      alert(xmlDom.xml);
    }esle{
      thorw new Errow(“错误行号为” + xmlDom.parseError.line + "错误字符位置" + xmlDom.parseError.linepos + "错误解析" + xmlDom.parseError.reason);  
    }
  }esle{}
}
xmlDom.load("demo.xml");

 

吾日三省吾身,脚踏实地~