• 域名注册
  • 虚拟主机
  • 繁體中文
  • 网站地图
  • 您现在的位置:速牧网 >> 编程代码 >> 内容

    详细探讨JavaScript中的XML

    来源:网络 作者:不详 时间:2018-1-31 20:08:22

    可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。(百度百科)
    一、IE中的XML
    在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同。DOM2级提出了动态创建XML DOM规范,DOM3级进一步增强了XML DOM。所以,在不同的浏览器实现XML的处理是一件比较麻烦的事情。
    1.创建XML DOM对象
    IE的第一个原生支持XML的浏览器。它是通过ActiveX对象实现的。这个对象,只有IE有,一般是IE9之前采用。微软当年为了开发人员方便处理XML,创建了MSXML库,但却没有让web开发人员通过浏览器访问相同的对象。
    详细探讨JavaScript中的XML详细探讨JavaScript中的XML在这六个版本中微软只推荐三种:
    ①MSXML2.DOMDocument.6.0 最可靠最新的版本
    ②MSXML2.DOMDocument.3.0 兼容性最好的版本
    ③MSXML2.DOMDocument 仅针对IE5.5之前的版本
    这三个版本在不同的windows平台和浏览器下会有不同的支持,为了实现兼容,我们应该考虑这样操作:从6.0>3.0>备用这条路线进行实现。
    详细探讨JavaScript中的XML2.载入XML
    如果已经获取了XML DOM对象,那么可以使用loadXML()和load()这两个方法可以分别载入XML字符串或XML文件。
    详细探讨JavaScript中的XMLloadXML参数直接就是XML字符串,如果想效果更好,可以添加换行符\n。.xml属性可以序列化XML,获取整个XML字符串。
    详细探讨JavaScript中的XML当你已经加载了XML,那么就可以用之前学的DOM来获取XML数据,比如标签内的某个文本。
    详细探讨JavaScript中的XMLDOM不单单可以获取XML节点,也可以创建。
    详细探讨JavaScript中的XML3.同步及异步
    load()方法是用于服务端载入XML的,并且限制在同一台服务器上的XML文件。那么在载入的时候有两种模式:同步和异步。
    所谓同步:就是在加载XML完成之前,代码不会继续执行,直到完全加载了XML再返回。坏处就是如果加载的数据停止响应或延迟太久,浏览器会一直堵塞从而造成假死状态。
    xmlDom.async = false; //设置同步,false,可以用服务端语言测试假死
    所谓异步:就是在加载XML时,JavaScript会把子任务丢给浏览器内部后台去处理,不会造成堵塞,但要配合readystatechange事件使用,所以,通常我们都使用异步方式。
    xmlDom.async = true; //设置异步,默认
    通过异步加载,我们发现获取不到XML的信息。原因是,它并没有完全加载XML就返回了,也就是说,在浏览器内部加载一点,返回一点,加载一点,返回一点。这个时候就需要判断是否完全加载,并且可以使用了,再进行获取输出。
    详细探讨JavaScript中的XML详细探讨JavaScript中的XML这里有一点需要注意:load()方法必须放在onreadystatechange之后,才能保证就绪状态变化时调用该事件处理程序,因为要先触发。
    不能够使用this,不能用IE的事件处理函数,原因是ActiveX控件为了预防安全性问题。
    虽然可以通过XML DOM加载XML文件,但公认的还是XMLHttpRequest对象比较好。(涉及到Ajax,后续详细说)
    4.解析错误
    在加载XML时,无论使用loadXML()或load()方法,都有可能遇到XML格式不正确的情况。为了解决这个问题,微软的XML DOM提供了parseError属性。
    详细探讨JavaScript中的XML详细探讨JavaScript中的XML二、DOM2中的XML
    DOM2级在document.implemention中引入了createElement()方法。
    1.创建XML DOM对象
    详细探讨JavaScript中的XMLDOM2中不支持loadXML()方法。所以无法简易的直接创建XML字符串。
    createDocument()方法需要传递三个参数,命名空间、根标签名和文档声明,由于JavaScript管理命名空间比较困难,所以留空即可。文档声明一般根本用不上,直接null即可。
    2.载入XML 
    DOM2只支持load()方法,载入一个同一台服务器的外部XML文件。DOM2也有async属性,来表示同步或异步,默认为异步。
    详细探讨JavaScript中的XML3.DOMParse类型
    由于DOM2没有loadXML()方法直接解析XML字符串,所以提供了DOMParse类型来创建XML DOM对象。
    详细探讨JavaScript中的XML4.XMLSerializer类型
    由于DOM2没有序列化XML的属性,所以提供了XMLSerializer类型来帮助序列化XML字符串。
    详细探讨JavaScript中的XML5.解析错误
    在DOM2级处理XML发送错误时,并没有提供特有的对象来捕获错误,而是直接生成另一个错误XML文档,通过这个文档可以获取错误信息。
    详细探讨JavaScript中的XML
    前面分别讲了微软和DOM2级处理XML的方法,最后不得不又回到烦人的兼容问题上。在实现跨浏览器需要思考几个问题:1.load()只有IE、FF、Opera支持,所以无法跨浏览器。2.获取XML DOM对象顺序问题,先判断先进的DOM2的,然后再去判断落后的IE。3.针对不同的IE和DOM2级使用不同的序列化。4.针对不同的报错进行不同的报错机制。
    详细探讨JavaScript中的XML详细探讨JavaScript中的XML由于兼容性序列化过程有一点的差距,可能返回的结果字符串可能会有一些不同,至于load()加载xml文件则因为只有部分浏览器支持而无法跨浏览器。

  • 速牧网(www.suumuu.com) © 2018 版权所有 All Rights Reserved.
  • 豫ICP备17050497号