兼容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 相关文章推荐
Js 随机数产生6位数字
May 13 Javascript
分享javascript计算时间差的示例代码
Mar 19 Javascript
KnockoutJs快速入门教程
May 16 Javascript
AngularJS基础 ng-paste 指令简单示例
Aug 02 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 Javascript
基于 webpack2 实现的多入口项目脚手架详解
Jun 26 Javascript
js数组方法reduce经典用法代码分享
Jan 07 Javascript
js如何找出字符串中的最长回文串
Jun 04 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 Javascript
vue+element表格导出为Excel文件
Sep 26 Javascript
Vue.js的模板语法详解
Feb 16 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 文件状态缓存带来的问题
2008/12/14 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
解析php中const与define的应用区别
2013/06/18 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
今天,小程序正式支持 SVG
2019/04/20 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
魅力教师事迹材料
2014/01/10 职场文书
运动会广播稿100字
2014/01/11 职场文书
英语专业求职信
2014/07/08 职场文书
个人收入证明模板
2014/09/18 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
医院志愿者活动总结
2015/05/06 职场文书
夏洛特的网观后感
2015/06/15 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书