兼容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实现的页内搜索代码
May 23 Javascript
javascript Select标记中options操作方法集合
Oct 22 Javascript
jquery animate图片模向滑动示例代码
Jan 26 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
Jquery动态替换div内容及动态展示的方法
Jan 23 Javascript
Javascript日期格式化format函数的使用方法
Aug 30 Javascript
利用canvas实现的加载动画效果实例代码
Jul 05 Javascript
vue.js语法及常用指令
Oct 29 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 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中动态修改ini配置
2014/10/14 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Django中create和save方法的不同
2019/08/13 Python
pytorch 常用线性函数详解
2020/01/15 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
python利用opencv保存、播放视频
2020/11/02 Python
体育比赛口号
2014/06/09 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
2014年医务科工作总结
2014/12/18 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
报名委托书
2015/01/29 职场文书
诚信考试主题班会
2015/08/17 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
Django使用echarts进行可视化展示的实践
2021/06/10 Python