zoukankan      html  css  js  c++  java
  • Javascript XSLT 处理XML文件(支持FF和IE)

    最近使用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!");
    }

    转自:http://hi.baidu.com/boy2143/blog/item/692cfaf306696556342acc46.html

    真的非常感谢原作者

  • 相关阅读:
    简述SQL with(unlock)与with(readpast)
    SQLServer 查询最近一天,三天,一周,一月,一季度数据的方法
    C# DevExpress GridControl使用方法
    SQL一列的合并连起来
    DevExpress Report打印边距越界问题
    C# 快速高效率复制对象另一种方式 表达式树
    SQL传数组到存储过程中
    LogNet4学习笔记
    使用Squid部署代理缓存服务(标准正向、透明正反向代理)
    使用Postfix与Dovecot收发电子邮件(物理机虚拟机之间)
  • 原文地址:https://www.cnblogs.com/lys_013/p/2558127.html
Copyright © 2011-2022 走看看