|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2003
Città: [AN]Sirolo
Messaggi: 367
|
[AS & XML] Problema lettura Xml con Flash
Ciao a tutti, premetto subito che ho già letto numerose guide, tutorial ed esempi vari in merito a questo argomento, dopo una settimana sono ancora al punto di partenza...o quasi.
Vado subito al punto: Ho un file Xml di questo tipo: Codice HTML:
<xml> <categorie> <cat id="0001"> <nome>nome_categoria</nome> <descr>descrizione_categoria</descr> // </cat> <cat id="0002"> <nome>nome_categoria2</nome> <descr>descrizione_categoria2</descr> // </cat> // </categorie> </xml> Indubbiamente ho bisogno di sapere quante "cat" ci sono nell xml quindi ho fatto: Codice HTML:
var dato = new Array(); var my_xml = new XML(); var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.firstChild.childNodes; for(i = 0; i < nodes.length; i++){ var dato[i] = nodes[i].attributes.nome; } } } Grazie della disponibilità |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Codice:
<xml> <categorie> <cat id="0001"> <nome>nome_categoria</nome> ... Codice:
<?xml version="1.0" encoding="ISO-8859-1"?> <categorie> Codice:
var my_xml = new XML(); Codice:
nodes = my_xml.firstChild.childNodes; for(i = 0; i < nodes.length; i++){ var dato[i] = nodes[i].attributes.nome; } Codice:
dato.push( nodes[i].firstChild.value ); |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2003
Città: [AN]Sirolo
Messaggi: 367
|
allora l'xml è valido solo che nn ho scritto tutto l'ambaradan anche qui sul forum, my_xml.load(nome_file.xml) è messo fuori dalla funzione onload quindi anche quello c'è.
Le altre due cose che mi hai suggerito credo che mi risolvano il problema quindi intanto grazie, poi appena faccio le prove ti faccio sapere come è andata Aggiornamento: Ho modificato il codice in questa maniera: Codice HTML:
stop(); var my_xml = new XML(); var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.firstChild.childNodes; for(i = 0; i < nodes.length; i++){ txt_lo.text += nodes[i].firstChild.value } } } my_xml.load("categorie.xml"); Ultima modifica di AnD01 : 24-03-2008 alle 16:36. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Si vede che success è false... prova qualche trace qua e là, per esempio trace(success) o trace(nodes) o trace(nodes[i])
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2003
Città: [AN]Sirolo
Messaggi: 367
|
allora ho fatto come dici e come pensavo non entra nel ciclo for perchè con le impostazioni nodes = my_xml.firstchild.childNodes, nodes.length risulta uguale a 0. Success = true
Aggiornamento: Sto facendo qualche prova (a caso devo dire) ,posto i risultati sperando che possano illuminare qualcuno ![]() PROVA 1: Codice HTML:
stop(); var my_xml = new XML(); var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.nextSibling.childNodes; trace(success); trace(nodes.length) trace(nodes) } } my_xml.load("categorie.xml"); success = true nodes.length = undefined nodes = undefined PROVA 2: Codice HTML:
stop(); var my_xml = new XML(); var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.childNodes; trace(success); trace(nodes.length); trace(nodes) } } my_xml.load("categorie.xml"); success = true nodes.length = 2 nodes = ,<categorie> (cos'è sta virgola davanti categorie????) <cat name="primi piatti"> <name>primi piatti</name> <descr>boniii</descr> <delay>49</delay> </cat> <cat name="secondi"> <name>secondi</name> <descr>asdf</descr> <delay>23</delay> </cat> </categorie> PROVA 3: Codice HTML:
stop(); var my_xml = new XML(); var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.firstChild.childNodes; trace(success); trace(nodes.length); trace(nodes) } } my_xml.load("categorie.xml"); success = true nodes.length = 0 nodes = (niente) Ultima modifica di AnD01 : 25-03-2008 alle 11:22. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2003
Città: [AN]Sirolo
Messaggi: 367
|
Ancora qualche prova
PROVA 4: Codice HTML:
stop(); var my_xml = new XML(); var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.firstChild.nextSibling.childNodes; trace(success); trace(nodes.length); trace(nodes) } } my_xml.load("categorie.xml"); success = true nodes.length = 5 nodes = ,<cat name="primi piatti"> <name>primi piatti</name> <descr>boniii</descr> <delay>49</delay> </cat>, ,<cat name="secondi"> <name>secondi</name> <descr>asdf</descr> <delay>23</delay> </cat>, eseguendo la stessa prova con il comando my_xml.ignorewhite= "true" si ottengono i seguenti risultati success = true nodes.lenght = undefined nodes = undefined AGGIORNAMENTO: Ho trovato la chiave di volta! PROVA 5: Codice HTML:
stop(); var my_xml = new XML(); my_xml.ignoreWhite = true; * var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.firstChild.childNodes;* trace(success); trace(nodes.length); trace(nodes[0].attributes.name) } } my_xml.load("categorie.xml"); success = true nodes.length = 2 nodes[0].attributes.name = primi piatti l'unica cosa che non riesco ancora a leggere sono l tag all' interno di cat (descr, delay ecc) Ultima modifica di AnD01 : 25-03-2008 alle 11:59. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2003
Città: [AN]Sirolo
Messaggi: 367
|
L'ultimo scoglio da superare :
PROVA 6: Codice HTML:
stop(); var my_xml = new XML(); my_xml.ignoreWhite = true; var nodes = new Array(); my_xml.onLoad = function(success){ if (success){ nodes = my_xml.firstChild.childNodes; trace(success); trace(nodes.length); var dato; dato = (nodes[0].childNodes[1].value) trace(dato) } } my_xml.load("categorie.xml"); success = true nodes.lenght = 2 dato = undefined (mentre se tolgo il ".value" mi da <descr> descrizione </descr>... quindi come si estraggono i dati dai tag??? grazie mille |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:22.