兼容Firefox的Javascript XSLT 处理XML文件


Posted in Javascript onDecember 31, 2014

最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX来做的。

    无奈中,自己写了一个Javascript XSLT处理XML展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。
    在Firefox中使用XSLTProcessor对象处理XML,主要使用该对象的两个方法:
一、transformToFragment()。

二、transformToDocument()。

    下面的代码仅仅使用transformToFragment()方法来实现对XML文件处理,如果你对在Firefox中使用Javascript XSLT 处理XML文件感兴趣的话不妨试着将以下代码改写成使用transformToDocument()方法来实现的处理功能。
Javascript 代码如下:
 

function initialize() {

    var xmlDoc;

    var xslDoc;
    // 判断浏览器的类型

    if(document.implementation && document.implementation.createDocument)

    {        

        // 支持Mozilla浏览器

        try

        {

            xmlDoc = document.implementation.createDocument("", "", null);    

            xmlDoc.async = false;

            xmlDoc.load("guestbook/guestbook.xml");

        }

        catch(e)

        {

            alert("error:001");

        }

        try

        {

            xslDoc = document.implementation.createDocument("", "", null);

            xslDoc.async = false;     

              xslDoc.load("guestbook/guestbook.xsl");

              

          }

          catch(e)

          {

              alert("error:002");

          }

          try

          {

              // 定义XSLTProcessor对象    

            var xsltProcessor = new XSLTProcessor();

            xsltProcessor.importStylesheet(xslDoc);

            var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);

            // 将解析过的文本输出到页面

            var oDiv = document.getElementById("guestbookPanel");

            oDiv.appendChild(oResultFragment);

        }

        catch(e)

        {

            alert("error:003");

        }    

    }

    else if(typeof window.ActiveXObject != 'undefined')

    {        

        //var xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");        

        // 支持IE浏览器

        xmlDoc = new ActiveXObject('Microsoft.XMLDOM');

        xslDoc = new ActiveXObject('Microsoft.XMLDOM'); 

        xmlDoc.async = false;

        xslDoc.async = false;     

        xmlDoc.load("guestbook/guestbook.xml");

          xslDoc.load("guestbook/guestbook.xsl");

        guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);    

    }

    else

    {

        alert("Browser unknown!");

    }

}

javascript dom 处理XSL显示数据的第二种方式。

主要代码如下:

var xmlDoc;

 var xslDoc;

 // 判断浏览器的类型

 if(document.implementation && document.implementation.createDocument)

 {  

  // 支持Mozilla浏览器

  try

  {

   xmlDoc = document.implementation.createDocument("", "", null); 

   xmlDoc.async = false;

   xmlDoc.load("guestbook/guestbook.xml");

   xslDoc = document.implementation.createDocument("", "", null);

   xslDoc.async = false;  

     xslDoc.load("guestbook/guestbook.xsl");     

     // 定义XSLTProcessor对象 

   var xsltProcessor = new XSLTProcessor();

   xsltProcessor.importStylesheet(xslDoc);

    // transformToDocument方式

    var result = xsltProcessor.transformToDocument(xmlDoc);

    var xmls = new XMLSerializer();

    document.getElementById("guestbookPanel").innerHTML = xmls.serializeToString(result);

  }

  catch(e)

  {

   alert("Unable to do xml/xsl processing");

  } 

 }

 else if(typeof window.ActiveXObject != 'undefined')

 {

  try

  {

   // 支持IE浏览器

   xmlDoc = new ActiveXObject('Msxml2.DOMDocument');

   xslDoc = new ActiveXObject('Msxml2.DOMDocument'); 

   xmlDoc.async = false;

   xslDoc.async = false;  

   xmlDoc.load("guestbook/guestbook.xml");

     xslDoc.load("guestbook/guestbook.xsl");

   guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);

  }

  catch(e)

  {

   alert("Unable to do xml/xsl processing");

  }

 }

 else

 {

  alert("Browser unknown!");

 }
Javascript 相关文章推荐
动态获取复选框checkbox选中个数的jquery代码
Jun 25 Javascript
iframe子页面获取父页面元素的方法
Nov 05 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
批量修改标签css样式以input标签为例
Jul 31 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
Express系列之multer上传的使用
Oct 27 Javascript
JavaScript Date对象应用实例分享
Oct 30 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 #Javascript
浅谈javascript中字符串String与数组Array
Dec 31 #Javascript
jQuery中[attribute!=value]选择器用法实例
Dec 31 #Javascript
JavaScript中的Primitive对象封装介绍
Dec 31 #Javascript
JavaScript中的值类型转换介绍
Dec 31 #Javascript
javascript实现滑动解锁功能
Dec 31 #Javascript
JavaScript中number转换成string介绍
Dec 31 #Javascript
You might like
PHP中Array相关函数简介
2016/07/03 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python实现统计代码行的方法分析
2017/07/12 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
python将unicode和str互相转化的实现
2020/05/11 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
法律进社区实施方案
2014/03/21 职场文书
继承公证书
2014/04/09 职场文书
小学三年级学生评语
2014/04/22 职场文书
交流会主持词
2015/07/02 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
《风筝》教学反思
2016/02/23 职场文书
导游词之井冈山
2019/11/20 职场文书