Rumah pembangunan bahagian belakang Tutorial XML/RSS 灵活调用xsl来解析xml文档(js异步)

灵活调用xsl来解析xml文档(js异步)

Feb 27, 2017 pm 05:06 PM

   1.新建一个vs2003的web工程,取名为xmlTest

     2.将工程目录下的WebForm1.aspx中内容全部删除,只留下顶部的一条语句:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="XMLTest.WebForm1" %>
Salin selepas log masuk

3.修改WebForm1.aspx.cs中内容,在Page_Load中加入:

以下是引用片段:

    XmlDocument doc=new XmlDocument(); 
    String xmlfile=string.Empty; 
    xmlfile=Context.Request.PhysicalapplicationPath+(Request.QueryString["sel"].ToString()=="xml"?"\\hello.xml":"\\hello.xsl"); 
    doc.Load(xmlfile); 
    Response.Write(doc.InnerXml);
Salin selepas log masuk

4.在工程根目录下新增test.htm,并设为工程首页:

以下是引用片段:

<html> 
<head> 
  <title></title> 
</head> 
<body> 
  <div id="resTree"></div> 
  <FONT face="宋体"></FONT><input type="button" value="执行" onclick="GetXml()"><BR> 
  <script language="JScript"> 
  var srcTree,xsltTree,xt; 
  var http_request = false; 
    
  function GetXml() 
  {     
   srcTree = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); 
    srcTree.async=false; 
    xsltTree= new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); 
    xsltTree.async = false; 
    xt=new ActiveXObject("MSXML2.XSLTemplate"); 
   resTree.innerHTML=""; 
    makeRequest("WebForm1.aspx?sel=xml",GetXml_CB); 
  } 
     
    function makeRequest(url,callback) { 
        http_request = false; 
        if (window.xmlhttpRequest) { // Mozilla, Safari,... 
            http_request = new XMLHttPRequest(); 
            if (http_request.overrideMimeType) { 
                http_request.overrideMimeType(&#39;text/xml&#39;); 
            } 
        } else if (window.ActiveXObject) { // IE 
            try { 
                http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
            } catch (e) { 
                try { 
                    http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
                } catch (e) {} 
            } 
        }
        if (!http_request) { 
            alert(&#39;Giving up :( Cannot create an XMLHTTP instance&#39;); 
            return false; 
        } 
        http_request.onreadystatechange = callback; 
        http_request.open(&#39;GET&#39;, url, true); 
        http_request.send(null); 
    }
    function GetXml_CB() {
        if (http_request.readyState == 4) { 
            if (http_request.status == 200) {     
    srcTree.loadXML(http_request.responseText); 
    makeRequest("WebForm1.aspx?sel=xsl",GetXsl_CB); 
            } else { 
                alert(&#39;There was a problem with the request.&#39;); 
            } 
        }
    } 
     
    function GetXsl_CB(){ 
       if (http_request.readyState == 4) { 
         if (http_request.status == 200) { 
       xsltTree.loadXML(http_request.responseText); 
       xt.stylesheet=xsltTree; 
       var proc=xt.createProcessor(); 
       proc.input=srcTree; 
       proc.transform(); 
       resTree.innerHTML=proc.output; 
            } else { 
                alert(&#39;There was a problem with the request.&#39;); 
            } 
        } 
   
    }
    function makeRequest(url,callback) { 
     http_request = false; 
     if (window.XMLHttpRequest) { // Mozilla, Safari,... 
            http_request = new XMLHttpRequest(); 
            if (http_request.overrideMimeType) { 
                http_request.overrideMimeType(&#39;text/xml&#39;); 
            } 
        } else if (window.ActiveXObject) { // IE 
            try { 
                http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
            } catch (e) { 
                try { 
                    http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
                } catch (e) {} 
            } 
        }
        if (!http_request) { 
            alert(&#39;Giving up :( Cannot create an XMLHTTP instance&#39;); 
            return false; 
        } 
        http_request.onreadystatechange = callback; 
        http_request.open(&#39;GET&#39;, url, true); 
        http_request.send(null); 
    }
  </script>
</body> 
</html>
Salin selepas log masuk

5.运行工程,看看效果吧!

hello.xml(注意:我的xml文档中并没有指定对应的xsl解析文件名)

以下是引用片段:

<?xml version=&#39;1.0&#39;?>
<breakfast-menu> 
  <food> 
    <name>Belgian Waffles</name> 
    <price>$5.95</price> 
    <description>Two of our famous Belgian Waffles  
      with plenty of real maple syrup.</description> 
    <calories>650</calories> 
  </food> 
  <food> 
    <name>Strawberry Belgian Waffles</name> 
    <price>$7.95</price> 
    <description>Light Belgian waffles covered with  
     strawberries and whipped cream.</description> 
    <calories>900</calories> 
  </food> 
  <food> 
    <name>Berry-Berry Belgian Waffles</name> 
    <price>$8.95</price> 
    <description>Light Belgian waffles covered  
      with an assortment of fresh berries  
      and whipped cream.</description> 
    <calories>900</calories> 
  </food> 
  <food> 
    <name>French Toast</name> 
    <price>$4.50</price> 
    <description>Thick slices made from our homemade  
     sourdough bread.</description> 
    <calories>600</calories> 
  </food> 
  <food> 
    <name>Homestyle Breakfast</name> 
    <price>$6.95</price> 
    <description>Two eggs, bacon or sausage, toast,  
      and our ever-popular hash browns.</description> 
    <calories>950</calories> 
  </food> 
</breakfast-menu>
Salin selepas log masuk

hello.xsl

以下是引用片段:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:template match="/breakfast-menu">
        <xsl:for-each select="food"> 
          <DIV STYLE="background-color:teal; color:white; padding:4px"> 
            <SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN> 
            至 <xsl:value-of select="price"/> 
          </DIV> 
          <DIV STYLE="margin-left:20px; margin-bottom:1em; font-size:10pt"> 
            <xsl:value-of select="description"/> 
            <SPAN STYLE="font-style:italic"> 
              <xsl:value-of select="calories"/> 嘿嘿 
            </SPAN> 
          </DIV> 
        </xsl:for-each>
  </xsl:template> 
</xsl:stylesheet>
Salin selepas log masuk

xml文档只有纯粹的数据,如果需要显示到html页面中的话,一般需要使用定制的xsl文档来解析,或者手工通过js来读取xml中的值显示到html中的dom树中,当使用xsl文档来解析时,相应的xml文档中必须指定对应的xsl文档才能正常显示,但当有些程序动态输出xml文档时,并没有指定相应的xsl文档,这时就必须通过其它途径来加载相应的xsl文档来解析,当然,在服务器端输出xml文档时,通过一些xml api也可以实现,我这儿描述的是通过js来实现的一种方式。用这种方式的话,就抛开了服务器平台的限制,服务器端只需要输出相应的xml文档(.net/j2ee都可以),并且将对应的xsl文档输出给客户端(可以输出流或直接在客户端加载xsl文档)。

     这里有几个需要注意的地方,我们一般是使用Msxml2.Document组件来加载xml文档的,但当动态使用xsl解析xml文档时,必须使用Msxml2.FreeThreadedDOMDocument这种自由线程的组件,同时使用MSXML2.XSLTemplate模板组件来加载xml,xsl数据,通过MSXML2.XSLTemplate的transform方法,就可以动态的用xsl来解析xml数据了,另外,IE5开始,系统默认的xml组件是msxml2,如果需要使用更新的msxml组件需要安装更新的msxml组件包,并指定新的名称,例如Msxml2.FreeThreadedDOMDocument.4.0,现在最新的msxml组件是6.0beta,可在M$网站下载。

 以上就是灵活调用xsl来解析xml文档(js异步)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah kelajuan penukaran cepat apabila menukar XML ke PDF pada telefon bimbit? Adakah kelajuan penukaran cepat apabila menukar XML ke PDF pada telefon bimbit? Apr 02, 2025 pm 10:09 PM

Kelajuan XML mudah alih ke PDF bergantung kepada faktor -faktor berikut: kerumitan struktur XML. Kaedah Penukaran Konfigurasi Perkakasan Mudah Alih (Perpustakaan, Algoritma) Kaedah Pengoptimuman Kualiti Kod (Pilih perpustakaan yang cekap, mengoptimumkan algoritma, data cache, dan menggunakan pelbagai threading). Secara keseluruhannya, tidak ada jawapan mutlak dan ia perlu dioptimumkan mengikut keadaan tertentu.

Bagaimana cara menukar fail XML ke PDF di telefon anda? Bagaimana cara menukar fail XML ke PDF di telefon anda? Apr 02, 2025 pm 10:12 PM

Tidak mustahil untuk menyelesaikan penukaran XML ke PDF secara langsung di telefon anda dengan satu aplikasi. Ia perlu menggunakan perkhidmatan awan, yang boleh dicapai melalui dua langkah: 1. Tukar XML ke PDF di awan, 2. Akses atau muat turun fail PDF yang ditukar pada telefon bimbit.

Bagaimana cara menukar XML ke PDF di telefon anda? Bagaimana cara menukar XML ke PDF di telefon anda? Apr 02, 2025 pm 10:18 PM

Ia tidak mudah untuk menukar XML ke PDF secara langsung pada telefon anda, tetapi ia boleh dicapai dengan bantuan perkhidmatan awan. Adalah disyorkan untuk menggunakan aplikasi mudah alih ringan untuk memuat naik fail XML dan menerima PDF yang dihasilkan, dan menukarnya dengan API awan. API awan menggunakan perkhidmatan pengkomputeran tanpa pelayan, dan memilih platform yang betul adalah penting. Kerumitan, pengendalian kesilapan, keselamatan, dan strategi pengoptimuman perlu dipertimbangkan ketika mengendalikan penjanaan XML dan penjanaan PDF. Seluruh proses memerlukan aplikasi front-end dan API back-end untuk bekerjasama, dan ia memerlukan pemahaman tentang pelbagai teknologi.

Alat pemformatan XML yang disyorkan Alat pemformatan XML yang disyorkan Apr 02, 2025 pm 09:03 PM

Alat pemformatan XML boleh menaip kod mengikut peraturan untuk meningkatkan kebolehbacaan dan pemahaman. Apabila memilih alat, perhatikan keupayaan penyesuaian, pengendalian keadaan khas, prestasi dan kemudahan penggunaan. Jenis alat yang biasa digunakan termasuk alat dalam talian, pemalam IDE, dan alat baris arahan.

Adakah terdapat aplikasi mudah alih yang boleh menukar XML ke PDF? Adakah terdapat aplikasi mudah alih yang boleh menukar XML ke PDF? Apr 02, 2025 pm 08:54 PM

Permohonan yang menukarkan XML terus ke PDF tidak dapat dijumpai kerana mereka adalah dua format yang berbeza. XML digunakan untuk menyimpan data, manakala PDF digunakan untuk memaparkan dokumen. Untuk melengkapkan transformasi, anda boleh menggunakan bahasa pengaturcaraan dan perpustakaan seperti Python dan ReportLab untuk menghuraikan data XML dan menghasilkan dokumen PDF.

Cara Membuka Web.xml Cara Membuka Web.xml Apr 03, 2025 am 06:51 AM

Untuk membuka fail web.xml, anda boleh menggunakan kaedah berikut: Gunakan editor teks (seperti Notepad atau TextEdit) untuk mengedit arahan menggunakan persekitaran pembangunan bersepadu (seperti Eclipse atau NetBeans) (Windows: Notepad Web.xml; Mac/Linux: Open -A -A TextEdit Web.xml)

Cara Membuka Format XML Cara Membuka Format XML Apr 02, 2025 pm 09:00 PM

Gunakan kebanyakan editor teks untuk membuka fail XML; Jika anda memerlukan paparan pokok yang lebih intuitif, anda boleh menggunakan editor XML, seperti editor XML oksigen atau XMLSPY; Jika anda memproses data XML dalam program, anda perlu menggunakan bahasa pengaturcaraan (seperti Python) dan perpustakaan XML (seperti XML.Etree.ElementTree) untuk menghuraikan.

Cara Mengeksport PDF dengan XML Cara Mengeksport PDF dengan XML Apr 03, 2025 am 06:45 AM

Terdapat dua cara untuk mengeksport XML ke PDF: menggunakan XSLT dan menggunakan perpustakaan mengikat data XML. XSLT: Buat lembaran gaya XSLT, tentukan format PDF untuk menukar data XML menggunakan pemproses XSLT. Perpustakaan mengikat data XML: Import Perpustakaan Pengikat Data XML Buat dokumen PDF Memuatkan Fail PDF Eksport Data XML. Kaedah mana yang lebih baik untuk fail PDF bergantung kepada keperluan. XSLT menyediakan fleksibiliti, manakala perpustakaan mengikat data mudah dilaksanakan; Untuk penukaran mudah, perpustakaan mengikat data lebih baik, dan untuk penukaran yang kompleks, XSLT lebih sesuai.

See all articles