ITPub博客

首页 > IT职业 > IT职场 > 软件测试常用文件之XML

软件测试常用文件之XML

IT职场 作者:千锋教育官方 时间:2019-09-17 15:21:18 0 删除 编辑

  

  随着互联网的发展, 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<version.length;i++){

 

  try{

 

  var xmlDom=new ActiveXObject(version<i>);

 

  return xmlDom;

 

  }catch(e){

 

  // 跳过

 

  }

 

  }

 

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

 

  }

 

  2. 载入 XML

 

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

 

  xmlDom.loadXML('<root version="1.0"><user>Lee</user></root>');

 

  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];// 获取 <user> 节点

 

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

 

  alert(user.firstChild.nodeValue);// 获取 <user> 里的值 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.>

 

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

 

  alert(xmlDom.xml);

 

  }

 

  }

 

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69914734/viewspace-2657267/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 软件测试基础
请登录后发表评论 登录
全部评论
千锋IT职业教育——做真实的自己 用良心做教育

注册时间:2019-03-28

  • 博文量
    140
  • 访问量
    92354