兼容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 相关文章推荐
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
Apr 17 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
Javascript简写条件语句(推荐)
Jun 12 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
Nov 10 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
ES6新增的math,Number方法
Aug 06 Javascript
基于Bootstrap table组件实现多层表头的实例代码
Sep 07 Javascript
JavaScript学习笔记之DOM操作实例分析
Jan 08 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
JS实现鼠标按下拖拽效果
Jul 23 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
JavaScript的Set数据结构详解
Feb 18 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
浅谈 vue 中的 watcher
2017/12/04 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python创建日历实例
2014/08/21 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
介绍一下Make? 为什么使用make
2016/07/31 面试题
财务学生的职业生涯发展
2014/02/11 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
中层干部培训方案
2014/06/16 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android