Με ποιο τρόπο μπορώ να διαβάσω τα "παιδιά" ενός XML αρχείου

Συζητήσεις για XML, XSLT, RSS και παράγωγα της γενικότερης XML

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Με ποιο τρόπο μπορώ να διαβάσω τα "παιδιά" ενός XML αρχείου

Δημοσίευση από majuranus » 15 Σεπ 2011 13:04

Καλησπέρα σας,
έχω ένα XML αρχείο το οποίο έχει τη παρακάτω δομή

Κώδικας: Επιλογή όλων

<markers_th>
  <marker_th imerominia="02/01/2011" ora="13&#58;00 - 17&#58;00" perifereia="Δυτική Μακεδονία" diamerisma="Κοζάνης" dimos="Δήμος Κοζάνης" odiko_diktio="Λοιπό Ε.Ο. Δίκτυο" address="8ο χλμ. Ε.Ο. Κοζάνης-Λάρισας" astinomiki_dieuthinsi="Α.Δ. ΚΟΖΑΝΗΣ" lat="40.261189" lng="21.911001" type="th_atixima">
     <dead_th idiotita="Οδηγός" ilikia="55+" oxima="Ι.Χ.Ε." eidos="Σύγκρουση" aitia="Κίνηση στο αντίθετο ρεύμα"/>
     <dead_th idiotita="Επιβάτης" ilikia="55+" oxima="Ι.Χ.Ε." eidos="Σύγκρουση" aitia="Κίνηση στο αντίθετο ρεύμα"/>
  </marker_th>
</markers_th>
Δουλεύω με Javascript και διαβάζω κανονικά τις μεταβλητές του <marker_th> με μία FOR
Το πρόβλημά μου είναι ότι θέλω να καταχωρώ σε μεταβλητή τύπου Array τις τιμές των <dead_th> για κάθε <marker_th>
Αυτός είναι ο κώδικας που έχω παρακάτω αλλά έχει λάθος...
Απ' όσο αντιλαμβάνομαι είναι λάθος η εντολή
var dead_th = xml.documentElement.getElementsByTagName("dead_th");
η οποία όπως είναι μετράει όλα τα <dead_th> του XML, ενώ εγώ θέλω να μετράει μόνο τα <dead_th> του <marker_th> που σαρώνει εκείνη τη στιγμή

Κώδικας: Επιλογή όλων

var xml = GXml.parse&#40;data&#41;;
		          		var markers_th = xml.documentElement.getElementsByTagName&#40;"marker_th"&#41;;
		          		var idiotita = new Array&#40;&#41;;
						var ilikia = new Array&#40;&#41;;
						var oxima = new Array&#40;&#41;;
						var eidos = new Array&#40;&#41;;
						var aitia = new Array&#40;&#41;;
						for &#40;var q = 0; q < markers_th.length; q++&#41;
							&#123;
		            			var imerominia = markers_th&#91;q&#93;.getAttribute&#40;"imerominia"&#41;;
								var ora = markers_th&#91;q&#93;.getAttribute&#40;"ora"&#41;;
		            			var perifereia = markers_th&#91;q&#93;.getAttribute&#40;"perifereia"&#41;;
								var diamerisma = markers_th&#91;q&#93;.getAttribute&#40;"diamerisma"&#41;;
								var dimos = markers_th&#91;q&#93;.getAttribute&#40;"dimos"&#41;;
								var odiko_diktio = markers_th&#91;q&#93;.getAttribute&#40;"odiko_diktio"&#41;;
								var address = markers_th&#91;q&#93;.getAttribute&#40;"address"&#41;;
								var astinomiki_dieuthinsi = markers_th&#91;q&#93;.getAttribute&#40;"astinomiki_dieuthinsi"&#41;;
								var dead_th = xml.documentElement.getElementsByTagName&#40;"dead_th"&#41;;
								for &#40;var z = 0; z < dead_th.length; z++&#41;
									&#123;
										idiotita&#91;z&#93; = dead_th&#91;z&#93;.getAttribute&#40;"idiotita"&#41;;
										ilikia&#91;z&#93; = dead_th&#91;z&#93;.getAttribute&#40;"ilikia"&#41;;
										oxima&#91;z&#93; = dead_th&#91;z&#93;.getAttribute&#40;"oxima"&#41;;
										eidos&#91;z&#93; = dead_th&#91;z&#93;.getAttribute&#40;"eidos"&#41;;
										aitia&#91;z&#93; = dead_th&#91;z&#93;.getAttribute&#40;"aitia"&#41;;
									&#125;
var type_th = markers_th&#91;q&#93;.getAttribute&#40;"type"&#41;;
var point_th = new GLatLng&#40;parseFloat&#40;markers_th&#91;q&#93;.getAttribute&#40;"lat"&#41;&#41;, parseFloat&#40;markers_th&#91;q&#93;.getAttribute&#40;"lng"&#41;&#41;&#41;;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Με ποιο τρόπο μπορώ να διαβάσω τα "παιδιά" ενός XML αρχείου

Δημοσίευση από fafos » 15 Σεπ 2011 18:46

den katalavaino thn logikh tou xml... to na pareis ta "children" einai efikto... apo thn stigmh omos pou exeis 2 elements me ton idio titlo (dead_th) tha sou gyrnaei panta to 2o otan thes na ta ektyposeis (se ena infowindow gia paradeigma).. gia tou logou to alhthes des auto: http://istopoli.com/tuts/mapx.html

emfanizei panta to dead_th tou epivath..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Με ποιο τρόπο μπορώ να διαβάσω τα "παιδιά" ενός XML αρχείου

Δημοσίευση από majuranus » 15 Σεπ 2011 19:04

Το πρόβλημα είναι στην εμφωλευμένη for, εκεί έχω φτιάξει μεταβλητές τύπου array() όπου για κάθε markers_th, επαναλαμβάνω ανάλογα με τα children που έχει το συγκεκριμένο markers_th.

Το πρόβλημα είναι ότι δεν έχω κάποιο τρόπο να γνωρίζω σε ποιο markers_th απευθύνονται τα children..

η πρώτη for μετράει έως ότου τελειώσουν τα markers_th . Κάθε markers_th έχει 1 ή και περισσότερα dead_th αυτό το γνωρίζω από
var dead_obj = markers_th[q].childNodes.length

αυτό που δεν γνωρίζω (και είναι το σημείο όπου έχω το πρόβλημα) είναι εδώ
for (var z = 0; z < dead_obj.length; z++)
{
idiotita[z] = dead_obj[q].getAttribute("idiotita");
ilikia[z] = dead_obj[q].getAttribute("ilikia");
oxima[z] = dead_obj[q].getAttribute("oxima");
eidos[z] = dead_obj[q].getAttribute("eidos");
aitia[z] = dead_obj[q].getAttribute("aitia");
}
Από την αριστερή πλευρά των μεταβλητών πίνακα δημιουργώ ένα πίνακα z μεγέθους για να μπορώ να διαβάσω μετά όσες εγγραφές κι αν έχει
Μετα το κάθε όμως θέλω να του λέω πάρε το getAttribute("...") από το αντικείμενο στο οποίο βρίσκονται τα dead_th που σαρώνει εκείνη τη στιγμή!

Δεν ξέρω αν κατάλαβες, δεν είμαι και φιλόλογος αλλά αυτό που συμβαίνει είναι ότι τα children που εμφανίζονται σε κάθε markers_th δεν είναι σωστά γιατί από ένα σημείο και μετά χάνει τη σειρά του.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Με ποιο τρόπο μπορώ να διαβάσω τα "παιδιά" ενός XML αρχείου

Δημοσίευση από fafos » 15 Σεπ 2011 19:10

xrhsimopoieis polla markers_th h mono 1 opos sto xml pou dineis sthn arxh?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...



Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Με ποιο τρόπο μπορώ να διαβάσω τα "παιδιά" ενός XML αρχείου

Δημοσίευση από fafos » 15 Σεπ 2011 19:21

sta polla mperdeutai to pragma.. gia ena koitaxe auto: http://istopoli.com/tuts/mapx1.html

an einai gia polla prepei na kaneis ta "q" (markers_th) array (opos kano me ta dead_th) kai exo apo tis loupes na ta "pantrepseis" gia na pareis se kathe infowindow tis sostes plhrofories..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...


Απάντηση

Επιστροφή στο “XML, XSLT”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης