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

    Errore caricamento XML!! Help me!

    Ciao a tutti ragazzi.
    Quest'oggi ho un problema con il caricamento di un file xml.
    Sto ideando un menù automatico, ovvero che si crei in automatico in base a dati che risiedono all'interno di un file xml.

    Come tutti i neofiti, ho provato con file di esempi scaricati dalla rete... e qui viene il bello...

    Il caricamento d'esempio che prendo in considerazione, funziona alla perfezione. Il mio, invece, no.

    Vi allego i due codici:

    -- Esempio scaricato --

    filexml = "orari.xml";
    ApriXML();

    function ApriXML ()
    {
    mioxml = new XML();
    myarray = new Array();
    mioxml.load(filexml);
    mioxml.onLoad = ElaboraXML(success);
    }

    function ElaboraXML (success)
    {
    if (mioxml.loaded)
    {
    myarray = mioxml.firstChild.nextSibling.childNodes;
    trace ("Tot elementi = " + myarray.length);

    for (i=0;i<=myarray.length;i++)
    {
    if (myarray[i].nodeName == "volo")
    {
    trace("------------------")
    trace(myarray[i].attributes.id)
    trace(myarray[i].childNodes[1].attributes.h)
    trace(myarray[i].childNodes[1].childNodes.toString())
    trace(myarray[i].childNodes[3].attributes.h)
    trace(myarray[i].childNodes[3].childNodes.toString())
    }
    }
    }
    }

    ed il file xml (orari.xml) è il seguente:

    <voli>
    <volo id="AZ1570">
    <partenza h="06:45">Cagliari</partenza>
    <arrivo h="07:50">Roma</arrivo>
    </volo>
    <volo id="AZ1572">
    <partenza h="07:20">Cagliari</partenza>
    <arrivo h="08:25">Roma</arrivo>
    </volo>
    <volo id="AZ1578">
    <partenza h="09:05">Cagliari</partenza>
    <arrivo h="10:10">Roma</arrivo>
    </volo>
    <volo id="AZ1574">
    <partenza h="10:50">Cagliari</partenza>
    <arrivo h="11:55">Roma</arrivo>
    </volo>
    <volo id="AZ1568">
    <partenza h="12:00">Cagliari</partenza>
    <arrivo h="13:05">Roma</arrivo>
    </volo>
    <volo id="AZ8111">
    <partenza h="12:00">Cagliari</partenza>
    <arrivo h="13.00">Roma</arrivo>
    </volo>
    <volo id="AZ1576">
    <partenza h="13:25">Cagliari</partenza>
    <arrivo h="14:30">Roma</arrivo>
    </volo>
    </voli>

    -- Il mio codice --

    fileXML = "xml2.xml";
    CaricaXML();

    function CaricaXML()
    {
    aMenu = new Array();
    docXML = new XML();
    docXML.load(fileXML);
    docXML.onLoad = PopolaMenu();
    }

    function PopolaMenu()
    {
    if (docXML.loaded)
    {
    trace(docXML);

    aMenu = docXML.firstChild.nextSibling.childNodes;
    trace("Tot elementi: " + aMenu.length);

    for (i=0;i<=aMenu.length;i++)
    {
    if (aMenu[i].nodeName == "pulsante")
    {
    trace("------------------------------------------------");
    trace(aMenu[i].attributes.istanza);
    trace(aMenu[i].childNodes[1].childNodes.toString);
    trace(aMenu[i].childNodes[3].childNodes.toString);
    trace(aMenu[i].childNodes[5].childNodes.toString);
    trace(aMenu[i].childNodes[7].childNodes.toString);
    trace(aMenu[i].childNodes[9].childNodes.toString);
    }
    }
    }
    }

    ed il file xml (xml2.xml) è il seguente:


    <menu>
    <pulsante istanza="home">
    <etichetta>HOME PAGE</etichetta>
    <posx>70</posx>
    <posy>40</posy>
    <alpha>100</alpha>
    <visible>1</visible>
    </pulsante>
    <pulsante istanza="vacanze">
    <etichetta>SARDEGNA</etichetta>
    <posx>70</posx>
    <posy>90</posy>
    <alpha>100</alpha>
    <visible>1</visible>
    </pulsante>
    <pulsante istanza="auto">
    <etichetta>IL MIO BOLIDE</etichetta>
    <posx>70</posx>
    <posy>140</posy>
    <alpha>100</alpha>
    <visible>1</visible>
    </pulsante>
    </menu>

    Il mio problema sorge al caricamento dell'array aMenu.
    Al momento dell'assegnazione, infatti, il debug mi restituisce "undefined", perhcè!?
    Noterete che la struttura dei due file xml è simile, ma cambiano i contenuti. Perchè, allora, uno funziona e l'altro no!? :master:

    Ditemi voi.
    Grazie in anticipo a tutti e buona giornata.

    Mackly


    P.S. A cosa serve il parametro "success" nella funzione "ElaboraXML"? Funge da parametro di uscita che verrà restituito alla fine di tale funzione? E come dovrebbe essere impiegato?
    Volere è potere

  2. #2
    prova così:

    codice:
    filexml = "orari.xml";
    ApriXML();
    function ApriXML() {
    	mioxml = new XML();
    	mioxml.ignoreWhite = true;
    	myarray = new Array();
    	mioxml.load(filexml);
    	mioxml.onLoad = ElaboraXML;
    }
    function ElaboraXML(success) {
    	if (success) {
    		myarray = this.firstChild.childNodes;
    		trace("Tot elementi = "+myarray.length);
    		for (i=0; i<myarray.length; i++) {
    			if (myarray[i].nodeName == "volo") {
    				trace("------------------");
    				trace(myarray[i].attributes.id);
    				trace(myarray[i].childNodes[0].attributes.h);
    				trace(myarray[i].childNodes[0].childNodes.toString());
    				trace(myarray[i].childNodes[1].attributes.h);
    				trace(myarray[i].childNodes[1].childNodes.toString());
    			}
    		}
    	} else {
    		trace("Errore nel caricamento del file xml");
    	}
    }
    fileXML = "xml2.xml";
    CaricaXML();
    function CaricaXML() {
    	aMenu = new Array();
    	docXML = new XML();
    	docXML.ignoreWhite = true;
    	docXML.load(fileXML);
    	docXML.onLoad = PopolaMenu;
    }
    function PopolaMenu(success) {
    	if (success) {
    		aMenu = docXML.firstChild.childNodes;
    		trace("------------------------------------------------");
    		trace("Tot elementi: "+aMenu.length);
    		for (i=0; i<aMenu.length; i++) {
    			if (aMenu[i].nodeName == "pulsante") {
    				trace("------------------------------------------------");
    				trace("istanza = "+aMenu[i].attributes.istanza);
    				for (j=0; j<aMenu[i].childNodes.length; j++) {
    					trace(aMenu[i].childNodes[j].nodeName+" = "+aMenu[i].childNodes[j].firstChild.nodeValue);
    				}
    			}
    		}
    	} else {
    		trace("Errore nel caricamento del file xml");
    	}
    }
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

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