软件测试常用文件之XML

 

  随着互联网的发展,Web应用程序的丰富,开发人员越来越希望能够使用客户端来操作XML技术。而XML技术一度成为存储和传输结构化数据的标准。

 

  一.IE中的XML

 

  在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同。DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM。所以,在不同的浏览器实现XML的处理是一件比较麻烦的事情。

 

1.创建XMLDOM对象

 

IE浏览器是第一个原生支持XML的浏览器,而它是通过ActiveX对象实现的。这个对象,只有IE有,一般是IE9之前采用。微软当年为了开发人员方便的处理XML,创建了MSXML库,但却没有让Web开发人员通过浏览器访问相同的对象。

 

var xmlDom=new ActiveXObject('MSXML2.DOMDocument')

 

ActiveXObject类型

 

XML版本字符串说明

 

Microsoft.XmlDom最初随同IE发布,不建议使用

 

MSXML2.DOMDocument脚本处理而更新的版本,仅在特殊情况作为备份用

 

MSXML2.DOMDocument.3.0在JavaScript中使用,这是最低的建议版本

 

MSXML2.DOMDocument.4.0脚本处理时并不可靠,使用这个版本导致安全警告

 

MSXML2.DOMDocument.5.0脚本处理时并不可靠,使用这个版本导致安全警告

 

MSXML2.DOMDocument.6.0脚本能够可靠处理的最新版本

 

PS:在这六个版本中微软只推荐三种:

 

1.MSXML2.DOMDocument.6.0最可靠最新的版本

 

2.MSXML2.DOMDocument.3.0兼容性较好的版本

 

3.MSXML2.DOMDocument仅针对IE5.5之前的版本

 

PS:这三个版本在不同的windows平台和浏览器下会有不同的支持,那么为了实现兼容,我们应该考虑这样操作:从6.0->3.0->备用版本这条路线进行实现。

 

function createXMLDOM(){

 

var version=[

 

'MSXML2.DOMDocument.6.0',

 

'MSXML2.DOMDocument.3.0',

 

'MSXML2.DOMDocument'

 

];

 

for(var i=0;i

 

try{

 

var xmlDom=new ActiveXObject(version);

 

return xmlDom;

 

}catch(e){

 

//跳过

 

}

 

}

 

throw new Error('您的系统或浏览器不支持MSXML!');//循环后抛出错误

 

}

 

2.载入XML

 

  如果已经获取了XMLDOM对象,那么可以使用loadXML()和load()这两个方法可以分别载入XML字符串或XML文件。

 

xmlDom.loadXML('Lee');

 

alert(xmlDom.xml);

 

PS:loadXML参数直接就是XML字符串,如果想效果更好,可以添加换行符\n。.xml属性可以序列化XML,获取整个XML字符串。

 

xmlDom.load('test.xml');//载入一个XML文件

 

alert(xmlDom.xml);

 

  当你已经可以加载了XML,那么你就可以用之前学习的DOM来获取XML数据,比如标签内的某个文本。

 

var user=xmlDom.getElementsByTagName('user')[0];//获取节点

 

alert(user.tagName);//获取元素标签

 

alert(user.firstChild.nodeValue);//获取里的值Lee

 

DOM不单单可以获取XML节点,也可以创建。

 

var email=xmlDom.createElement('email');

 

xmlDom.documentElement.appendChild(email);

 

3.同步及异步

 

load()方法是用于服务器端载入XML的,并且限制在同一台服务器上的XML文件。那么在载入的时候有两种模式:同步和异步。

 

  所谓同步:就是在加载XML完成之前,代码不会继续执行,直到完全加载了XML再返回。好处就是简单方便、坏处就是如果加载的数据停止响应或延迟太久,浏览器会一直堵塞从而造成假死状态。

 

xmlDom.async=false;//设置同步,false,可以用PHP测试假死

 

  所谓异步:就是在加载XML时,JavaScript会把任务丢给浏览器内部后台去处理,不会造成堵塞,但要配合readystatechange事件使用,所以,通常我们都使用异步方式。

 

xmlDom.async=true;//设置异步,默认

 

  通过异步加载,我们发现获取不到XML的信息。原因是,它并没有完全加载XML就返回了,也就是说,在浏览器内部加载一点,返回一点,加载一点,返回一点。这个时候,我们需要判断是否完全加载,并且可以使用了,再进行获取输出。

 

XML DOM中readystatechange事件

 

  就绪状态说明

 

1DOM正在加载

 

2DOM已经加载完数据

 

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

 

4DOM已经完全可以

 

PS:readyState可以获取就绪状态值

 

var xmlDom=createXMLDOM();

 

xmlDom.async=true;//异步,可以不写

 

xmlDom.onreadystatechange=function(){

 

if(xmlDom.readyState==4){//完全加载了,再去获取XML

 

alert(xmlDom.xml);

 

}

 

}

 

xmlDom.load('test.xml');//放在后面重点体现异步的作用

 

尾注: 如果你对软件测试感兴趣,欢迎来访!

关注作者:千锋教育官方博客 更多免费视频教程、学习工具获取方式: 千锋软件测试①群:722498357

你可能感兴趣的:(软件测试,IT,学习教程,软件测试,软件测试教程,软件测试要学什么)