PDA

Volledige versie bekijken : XML en array probleem


Vinzz
%Europe/Berlin %748 %2006, 17:57
Hai iedereen (again :O )


Ik zit met een probleem met een xml file die ik inlees in flash. Ik lees de elementen in in arrays.. hier zit nu juist het probleem..

Ik kijk aan de hand van de nodenaam wat soort element erin zit (een relation of een child element). Als het een relatie-element is zet hij dit in de relatie_array, en als het een kind element is in de kinderen_array.

Hier gaat het fout. Als ik na de for lusjes mijn relatie_array wil tracen geeft dit voor elke waarde undefined. Eveneens is de lengte van de array fout.
Het afprinten van de kinderen_array en de lengte hiervan loopt dan weer zoals het moet.

Iemand ook maar de kleinste aanwijzing? Ik ben er al sinds 9u deze morgen non-stop men brein over aan het pijnigen en ik kan zo stilletjesaan de muren oplopen.

De files zijn toegevoegd in bijlage

Alvast enorm bedankt !

BernardV
%Europe/Berlin %761 %2006, 18:16
Ten eerste lees je alleen het eerste relatie item per node uit en ook alleen het eerste kinder item... Dus de gegevens zullen nooit kloppen.
Daarbij is het ook nog zo, als je in een globale array de relaties opslaat zonder de eigenaar heb je er ook niets aan, want met wie ligt de relatie dan?

Kun je misschien in tekst omschrijven wat het moet doen? Dan is het wat makkelijker helpen.

Vinzz
%Europe/Berlin %766 %2006, 18:23
bernardV, alvast bedankt voor je snelle reactie.

Ten eerste lees je alleen het eerste relatie item per node uit en ook alleen het eerste kinder item... Dus de gegevens zullen nooit kloppen.

Als je published kloppen de items wel degelijk in het output window


Daarbij is het ook nog zo, als je in een globale array de relaties opslaat zonder de eigenaar heb je er ook niets aan, want met wie ligt de relatie dan?

Deze code is maar een klein deeltje vna men AS (telt 1260 lijnen in totaal, zou alles nodeloos bemoeilijken moest ik alles hier posten)

de arrays worden gebruikt in andere functies om de elementen dynamisch op de stage te plaatsen en allerle acties te laten ondergaan (werkt allemaal :))

mvg,
Stef

BernardV
%Europe/Berlin %772 %2006, 18:32
Zie het al ;)

a loopt door, dus voor beide arrays begint het niet op 0.

De oplossing:

verwijder deze 2 regels:

relatie_array[a] = new Array (2);
kinderen_array[a] = new Array (2);


Dan vervang je:

relatie_array[a][0] = subSubElementNodes[0].firstChild.nodeValue;
relatie_array[a][1] = subSubElementNodes[1].firstChild.nodeValue;

door:

relatie_array.push(Array(subSubElementNodes[0].firstChild.nodeValue,subSubElementNodes[1].firstChild.nodeValue));


en vervang je:

kinderen_array[a][0] = subSubElementNodes[0].firstChild.nodeValue;
kinderen_array[a][1] = subSubElementNodes[1].firstChild.nodeValue;

door:

kinderen_array.push(Array(subSubElementNodes[0].firstChild.nodeValue,subSubElementNodes[1].firstChild.nodeValue));


Dan werkt het bij mij prima :)

array.push() zorgt ervoor dat het item op de eerstvolgende plek in de array komt te staan, dus je hoeft geen counter bij te houden. Wat in dit geval dus ook het probleem was ;)

Vinzz
%Europe/Berlin %777 %2006, 18:39
bernardV, je bent geniaal !

Ik snap wel nog steeds niet goed waar het probleem juist lag maar goed.. ik zit hier met smile tot achter men oren.. eindelijk werkt het.. bedankt !

BernardV
%Europe/Berlin %779 %2006, 18:43
Probleem zat hem in de for(a ... loop
Je liep daarmee de subnodes door, maar a loopt dus van 0 tot laatste subnode en dan wijs je opeens iets toe in relatie_array[a] maar misschien is a inmiddels wel 10 en het is het eerste item in je relatie_array.

Met push kun je dat dus ondervangen, of je zou per array een counter bij moeten houden.

Want nu maak je dus ook op relatie_array[0] een nieuwe array aan, maar hij loopt dus eerst alle andere subnodes bijlangs en bij een ander nummer komt hij pas bij de relaties.

Hoop dat dit iets duidelijker is...

Succes verder!