兼容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 相关文章推荐
Jquery CheckBox全选方法代码附js checkbox全选反选代码
Jun 09 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 Javascript
遍历DOM对象内的元素属性示例代码
Feb 08 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
简单实现js拖拽效果
Jul 25 Javascript
vue封装第三方插件并发布到npm的方法
Sep 25 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
bootstrap table实现合并单元格效果
Dec 24 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
bootstrap table插件动态加载表头
Jul 19 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
web前端开发也需要日志
2010/12/09 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
python与C互相调用的方法详解
2017/07/14 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python 创建一维的0向量实例
2019/12/02 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python实现贪吃蛇双人大战
2020/04/18 Python
python else语句在循环中的运用详解
2020/07/06 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
PHP面试题附答案
2015/11/28 面试题
励志演讲稿范文
2014/04/29 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis