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

    Problemi di lettura file XML

    [EDIT]Ho sbagliato sezione avrei dovuto postarlo in ActionScript[/EDIT]

    Ragazzi ho un problema che non riesco a risolvere...

    Ho uno filmato flash che mi legge i dati da un file xml e mi riporta i valori di alcuni nodi da sfruttare poi nel filmato stesso...

    Il problema è che questo funziona correttamente per un certo file XML, mentre non da nessun risultato con un altro file XML, "apparentemente" con la stessa struttura.

    Il file XML con cui funziona il codice

    Il file XML con cui NON funziona il codice

    L'unica differenza la si può notare per la presenza del parametro encoding="iso-8859-15" nel file funzionante, e se si guarda il codice html si nota la formattazione differente tra i 2 files...

    Questo è il codice AS che uso nel filmato ( adattato da un codice reperito su internet ).. Non sono un grande esperto in materia per cui perdonate eventuali strafalcioni nel codice... ma almeno funziona!

    codice:
    proxyXML = "http://localhost/svx/proxy.php?url=";
    // URL dell'XML remoto
    XMLremoto = "http://localhost/svx/servers4.xml";
    //XMLremoto = "http://localhost/servers.xml";
    // aggiungo alla fine dateNumer() per eseguire sempre in refresh dell'XML
    filexml = proxyXML+XMLremoto+"&rnd="+dateNumber();
    ApriXML();
    function ApriXML() {
    	serverID = "Ceridwen";
    	mioxml = new XML();
    	server = new Array();
    	relics = new Array();
    	mioxml.load(filexml);
    	mioxml.onLoad = ElaboraXML;
    	//mioxml.ignoreWhite = true
    	function ElaboraXML(success) {
    		if (mioxml.loaded) {
    			server = mioxml.firstChild.nextSibling.childNodes;
    			for (i=0; i<=server.length; i++) {
    				if (server[i].attributes.name == serverID) {
    					relic = (server[i].childNodes);
    					population = (relic.childNodes);
    					ServerName = (server[i].attributes.name);
    				}
    			}
    			ServerData();
    			RelicData();
    			KeepData();
    			CreaTabelle();
    		}
    	}
    }
    // Recupera info sul Server
    function ServerData() {
    	// ---------------------------------------------------
    	for (k=0; k<=relic.length; k++) {
    		if (relic[k].nodeName == "population") {
    			population = (relic[k].childNodes.toString());
    		} else if (relic[k].nodeName == "status") {
    			serverstatus = (relic[k].childNodes.toString());
    		}
    	}
    }
    // Recupera info sulle Relic
    function RelicData() {
    	// Array che contengono i Dati -----------------------
    	relicID = new Array();
    	owner = new Array();
    	RelicStatus = new Array();
    	level = new Array();
    	totalrp = new Array();
    	// ---------------------------------------------------
    	for (k=0; k<=relic.length; k++) {
    		if (relic[k].nodeName == "relic") {
    			relicID = (relic[k].childNodes);
    			relicName = (relic[k].attributes.name);
    			for (j=0; j<=relicID.length; j++) {
    				if (relicID[j].nodeName == "owner") {
    					owner = (relicID[j].childNodes.toString());
    					_root.RelicStatus.push([relicName, owner]);
    				} else if (charlev[j].nodeName == "race") {
    					race = (charlev[j].childNodes.toString());
    				}
    			}
    		}
    	}
    }
    // Funzione che Crea i clip 
    // e li posiziona sullo stage del filmato
    function CreaTabelle() {
    	// Parametri utilizzati per gestire lo scroll di barranav tramite il cursore di scrolling
    	thecounter = 0;
    	maxelements = KeepID.length-1;
    	//---------------------------------------------------------------------------------------
    	_root.loading = "";
    	for (i=0; i<relic.length; i++) {
    		_root.owner0.realmloading.attachMovie(relicstatus[0][1], "realmID", i);
    		_root.owner1.realmloading.attachMovie(relicstatus[1][1], "realmID", i);
    		_root.owner2.realmloading.attachMovie(relicstatus[2][1], "realmID", i);
    		_root.owner3.realmloading.attachMovie(relicstatus[3][1], "realmID", i);
    		_root.owner4.realmloading.attachMovie(relicstatus[4][1], "realmID", i);
    		_root.owner5.realmloading.attachMovie(relicstatus[5][1], "realmID", i);
    	}
    }
    Qualcuno sa dirmi perché con l'altro file non funziona?? Può essere colpa di quel parametro encoding o della differente formattazione??

    Vorrei far presente che i file sono in remoto e quindi non modificabili... devo risolvere il problema nel codice non potendo modificare la sorgente XML...


    Grazie in anticipo!

  2. #2
    si
    hai provato con il debug per vedere se prende i dati?

  3. #3
    Non li prende...

    Se metto un trace dopo la stringa "for (i=0; i<=server.length; i++) {" come nell'esempio qua sotto, mi restituisce valore 0, mentre con il file funzionante mi conta quanti "server" ci sono nel file xml

    codice:
    server = mioxml.firstChild.nextSibling.childNodes;
    			for (i=0; i<=server.length; i++) {
    				if (server[i].attributes.name == serverID) {
                                    trace ("Server: "+i);
    
    					relic = (server[i].childNodes);
    					population = (relic.childNodes);
    					ServerName = (server[i].attributes.name);
    				}
    			}

  4. #4
    xchè non hai messo la codifica iso... anche nell'altro?

  5. #5
    Nell'altro cosa? Il codice che uso è sempre lo stesso, mentre i file sono codificati in modo diverso... la codifica ISO va messa nel codice AS?? I file sorgente non ho modo di modificarli...

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.