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?