Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Parsing xml, non funziona in internet...perchè?

    ho fatto una pagina html + js che usando il parser microsoft estrapola alcuni dati da un file xml, su explorer tutto ok, quando vado per metterlo su altervista o su top host non funziona.
    sapreste dirmi perchè???

  2. #2
    ecco la pagina web:

    codice:
    <html>
      <head>
         <title>Libri di testo I.T.I.S. ****** A.S. 2006/2007</title>
         <script language="JavaScript">
    	 var paginaXML=loadParser("libri.xml")
    	 var radice=paginaXML.documentElement
    
            //carica il parser xml
            function loadParser(nomePagina){
               var app=new ActiveXObject("microsoft.xmldom");//apro il parser xml
               app.load(nomePagina);//carico il glossario xml
               while(!app.readyState=="4");//aspetto che sia del tutto carico
               return app
            }//loadParser
    	    
    		//carica le sezioni
            function loadSection(classe){
    		if(classe!=" "){
    		classe--
    		var i
    		   var sezioni=radice.childNodes.item(classe).attributes.item(1).text
    		       sezioni=sezioni.split(",")
               var select="<select name='sezione' onchange='loadBook("+classe+",sezione.value)'>\n"
    		       select+="    <option value=' ' selected> </option>"
    		   for(i=0;i<sezioni.length;i++)
    		       select+="    <option value='"+sezioni[i]+"'>"+sezioni[i]+"</option>\n"
    		   
    		   select+="</select>"
    		   sezione.innerHTML=select
    		}else{
    		libriTesto.innerHTML=""
    		sezione.innerHTML=""
    		}
    		}//loadSection
    
    		//stampa a video i libri per una determinata classe e sezione
    		function loadBook(classe,sezione){
    		var i,j,k
    		var materie
    		var tab=""
    		if(sezione!=" "){
    		tab="<table border='1'>\n  <tr> <th>Materia</th> <th>Titolo</th> <th>Autore/i</th> <th>Editore</th> <th>Isbn</th> <th>Prezzo</th> <th>Volume</th> <th>Acquisto</th> <th>Nuova adozione</tr>\n"
             materie=radice.childNodes.item(classe).childNodes.item(0)//materie
    		 for(i=0;i<materie.childNodes.length;i++){//per ogni materia
    		     materia=materie.childNodes.item(i)
    			 for(j=0;j<materia.childNodes.length;j++){//per ogni testo
                    testo=materia.childNodes.item(j)
    				if(isToBuy(sezione,testo.attributes.item(0).text)){
    				tab+="<tr> <td>"+materia.attributes.item(0).text+"</td>"
    			       for(k=0;k<testo.childNodes.length;k++)
    					   tab+="<td>"+testo.childNodes.item(k).text+"</td>"
    				  tab+="</tr>\n"
    				  
    				}//end if
    			}//for j
    		  }//for i
    		tab+="</table>"
    		}
    		libriTesto.innerHTML=tab
    		   
    		 
    		}//loadBook
    
    		//controlla se la sezione indicata adotta quel libro
    		function isToBuy(sezione,classi){
    		var i
    		classi=classi.split(",")
    		for(i=0;i<classi.length;i++)
    		    if(classi[i]==sezione)
    			   return true
    		 return false
    		}//isToBuy
    
    	 </script>
      </head>
      <body>
       <form method="post" action="">
           	Classe: <select name="classe" onchange="loadSection(classe.value)">
    		            <option value=" " selected> </option>
    					<option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                    </select>
    	            Sezione:<span id="sezione"></span>
    
    
    
    		
       </form>
       <div id="libriTesto"></div>
    
      </body>
    </html>
    forse il codice non è dei migliori (sicuro), ma sono 3 mesi che non programmano, di solito facico di meglio

    ed ecco parte del database in xml:

    codice:
    <?xml version='1.0' ?>
    <libri>
    
       <classe id="1" sezioni="a,b,c,d,e,f,g,h,sa,sb,sc,sd">
           <materie>
       </materie>
    </classe>
    
    <classe id="2" sezioni="a,b,c,d,e,f,g,sa,sb">
         <materie>
    	 </materie>
    </classe>
    <classe id="3" sezioni="ia,ib,ic,id,ta,tb,tc,sa,sb">
         <materie>
    	 </materie>
    </classe>
    <classe id="4" sezioni="ia,ib,ic,id,ta,tb,tc,sa,sb">
         <materie>
    	 </materie>
    </classe>
    <classe id="5" sezioni="ia,ib,ic,id,ta,tb,tc,sa,sb">
         <materie>
    	 </materie>
    </classe>
    
    </libri>
    in locale va tutto alla perfezione, mentre in internet praticamente non fa il parsing.....

    ho paura che sia perchè il parser è microsoft e l'hosting è linu, è possibile?
    thanks

  3. #3
    Alla fine con grande fortuna ho risolto.

    Per farlo funzionare ho provato a usare una funzione di caricamento parser che ho trovato in w3schools, ecco come era (circa...).


    function loadParser(nomePagina){
    var xmlDoc
    if (window.ActiveXObject){
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.load(nomePagina);
    while(!xmlDoc.readyState=="4");//aspetto che sia del tutto carico
    }else
    alert("Per ora lo script è compatibile solo con Internet Explorer, spero in futuro di renderlo compatibile anche per gli altri browser");
    return xmlDoc
    }//loadParser

    Loro inserivano anche l'opzione di caricamento del parser per altri browser, fermo restando che poi usavano il dom di M$ e non funzionava ugualmente quindi per ora il mio script sarà incompatibile con altri browser...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.