兼容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 相关文章推荐
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
js实现延迟加载的方法
Jun 24 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
Node.js的npm包管理器基础使用教程
May 26 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
深入了解query和params的使用区别
Jun 24 Javascript
JavaScript语句错误throw、try及catch实例解析
Aug 18 Javascript
Openlayers实现测量功能
Sep 25 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
js单词形式的运算符
2014/05/06 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python实现查询IP地址所在地
2015/03/29 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python 字符串换行的多种方式
2018/09/06 Python
python pygame实现方向键控制小球
2019/05/17 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
市场营销策划方案
2014/06/11 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
热情服务标语
2014/10/07 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
总结一些Java常用的加密算法
2021/06/11 Java/Android
Python中的xlrd模块使用整理
2021/06/15 Python