兼容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 相关文章推荐
json对象转字符串如何实现
Dec 02 Javascript
jquery插件validate验证的小例子
May 08 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
iframe调用父页面函数示例详解
Jul 17 Javascript
Javascript writable特性介绍
Feb 27 Javascript
javascript实现获取服务器时间
May 19 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
Javascript中的arguments对象
Jun 20 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 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 cli模式学习(PHP命令行模式)
2013/06/03 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
详解vue 组件注册
2020/11/20 Vue.js
Python实现的字典值比较功能示例
2018/01/08 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
Django框架封装外部函数示例
2019/05/28 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
三维科技面试题
2013/07/27 面试题
幼儿园大班开学教师寄语
2014/04/03 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
珍惜资源的建议书
2014/08/26 职场文书
微观世界观后感
2015/06/10 职场文书
秋季运动会加油词
2015/07/18 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
Springboot中如何自动转JSON输出
2022/06/16 Java/Android