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");
吾日三省吾身,脚踏实地~