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?