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?



Rispondi quotando