兼容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与Ajax常用代码实现对比
Oct 03 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
jQuery实现动画效果的简单实例
Jan 27 Javascript
javascript实现table表格隔行变色的方法
May 13 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
Sep 23 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 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的mysqli_stmt_init()函数讲解
2019/01/24 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
什么是组件架构
2016/05/15 面试题
房地产开发计划书
2014/01/10 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
公司总经理任命书
2014/06/05 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
一篇文章带你复习java知识点
2021/06/28 Java/Android
Python数组变形的几种实现方法
2022/05/30 Python