Visualizzazione dei risultati da 1 a 4 su 4

Discussione: js Xml parse

  1. #1

    js Xml parse

    codice:
    var xmlDoc;
    function readXml() {
    	//Carica documento XML
    	xmlDoc = loadXML('tratte.xml');
    	
    
    	
    	//Elemento radice
    	var root = xmlDoc.documentElement;
    	nodes = childElements(root);
    	var tratte= new Array();
    	var n=0;
    	for (var i=0; i < nodes.length; i++) {
    		var linee = childElements(nodes[i]);
    		var colore =color_html('hex');
    		for ( var j = 0; j < linee.length; j++) {
    			tratte[n]= new Array(5);
    			document.write("Tratta:"+i+" linea:"+j+", 
     partenza punti 
    ( "+linee[j].childNodes[0].childNodes[0].childNodes[0].nodeValue+","+linee[j].childNodes[0].childNodes[1].childNodes[0].nodeValue+");
    ");
    			document.write("Tratta "+i+" linea:"+j+", 
     arrivo punti 
    ( "+linee[j].childNodes[1].childNodes[0].childNodes[0].nodeValue+","+linee[j].childNodes[1].childNodes[1].childNodes[0].nodeValue+");
    ");
    			document.write("
    ");
    			tratte[n][0]=linee[j].childNodes[0].childNodes[0].childNodes[0].nodeValue;
    			tratte[n][1]=linee[j].childNodes[0].childNodes[1].childNodes[0].nodeValue;
    			tratte[n][2]=linee[j].childNodes[1].childNodes[0].childNodes[0].nodeValue;
    			tratte[n][3]=linee[j].childNodes[1].childNodes[1].childNodes[0].nodeValue;
    			tratte[n][4]=colore;
    			//linea,partenza,punto,figliovalore,value
    			
    			n++;
    		}  
    	}
    //	document.write("inserimento riuscito");
    //	for ( var i = 0; i < n; i++) {
    //		document.write("
     Riga: "+i+" stampata 
    ");
    //		for ( var j = 0; j < 5; j++) {
    //			document.write(tratte[i][j]+", ");
    //		}
    //		
    //		
    //	}
    //	document.write("
     stampa riuscita");
    	return tratte;
    }
    function loadXML(xmlfile) {
    	//MS InternetExplorer
    	if (window.ActiveXObject) {
    	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    	}
    	// Mozilla, Firefox, Opera
    	else if (document.implementation && document.implementation.createDocument) {
    		 var parser = new DOMParser(); 
    		 xmlDoc = parser.parseFromString(xmlfile, "text/xml");
    	} else {
    	  xmlDoc = false;
    	}
    	if(xmlDoc) {
    		xmlDoc.async = false;
    		xmlDoc.load(xmlfile);
    	}
    	return xmlDoc;
    }
    
    function childElements(node) {
    	var elements = new Array();
    	for (var i=0; i < node.childNodes.length;  i++)  {
    		if(node.childNodes[i].nodeType == 1) {
    			elements.push(node.childNodes[i]);
    		}
    	}
    	return elements;
    }
    
    function color_html(format,opacity){
    	   if(format == 'hex'){
    	     var color = '#';
    	     var simble = '0123456789ABCDEF'.split('');
    	     for(var i=0; i<=5; i++){
    	       color +=  simble[Math.round(Math.random() * 15)];
    	     }
    	    return color;
    	   }
    	  
    	   else if(format == 'dec' && opacity == 0){
    	     var color = 'rgb(';
    	     for(var i=0; i<=2; i++){
    	       color += Math.round(Math.random() * 254);
    	       if(i<2){color += ',';}
    	     }
    	     return color += ')';
    	   }
    	   
    	   else if(format == 'dec' && opacity != 0){
    	     var color = 'rgba(';
    	     for(var i=0; i<=2; i++){
    	       color += Math.round(Math.random() * 254) + ',';
    	       if(i==2){ color += opacity + ')' }
    	     }
    	     return color;
    	   }  
    	  }
    Scusate sapete dirmi come mai questo codice funziona solo su IE, mentre su firefox e crome non riesce a a leggere il dom..usando firebug diceche ce un errore su questa linea di codice
    codice:
    TypeError: linee[j].childNodes[0].childNodes[0] is undefined
    file:///C:/Users/Orphen/workspace/Test/readxml.js
    Line 23
    invece scriverendo in questo modo:
    codice:
    //	xml = '<?xml version="1.0" encoding="UTF-8"?><tratte><tratta><linea><partenza><puntoA>39.358143</puntoA><puntoB>16.225803</puntoB></partenza><arrivo><puntoA>39.2982629</puntoA><puntoB>16.2537357</puntoB></arrivo></linea><linea><partenza><puntoA>39.3545651</puntoA><puntoB>16.2413744</puntoB></partenza><arrivo><puntoA>39.3910949</puntoA><puntoB>16.2389759</puntoB></arrivo></linea></tratta><tratta><linea><partenza><puntoA>39.3317751</puntoA><puntoB>16.1839028</puntoB></partenza><arrivo><puntoA>39.329862</puntoA><puntoB>16.244561</puntoB></arrivo></linea></tratta></tratte>';
    //	var parser=new DOMParser();
    //    var xmlDoc=parser.parseFromString(xml,'text/xml');
    su firefox e chrome funziona perfettamente avete una soluzione?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2010
    residenza
    Pianeta Terra
    Messaggi
    1,614
    Premesso che non ho letto tutto lo script, ma se ti funziona con il secondo metodo, lasci quello no?

    Per una bella risata vai QUI

  3. #3
    non posso perche il secondo metodo funziona per una var string dove all'interno contiene il contenuto xml del file, pero il mio xml viene generato dinamicamente quindi devo per forza usare la prima funzione e caricarmelo da file

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.