PDA

Volledige versie bekijken : [OPGELOST] XML - String probleem


houseofdreams
%Europe/Berlin %588 %2007, 15:07
Ik laad gegevens uit de database in flash in via XML.

for (...)
{
pLINK.push(cN.childNodes[4].firstChild);
...
}

dit gebeurd in het begin van de movie. Wat later op de stage, worden deze waardes ingelezen en wil ik er iets mee doen. Tot zo ver loopt alles correct.

Maar nu zou ik willen "controleren" via een andere for loop, of er in dat veld een url instaat of niet. Dus doe ik dat als volgt :

for (i = ; ....)
{
if (pLINK[i] == "")
{
trace("geen link");
}
else
{
trace(pLINK[i]);
}
}

Maar hij maak gewoon geen onderscheid tussen een leeg veld of een veld met een url in. Ik krijg gewoon een lijst met sommige velden leeg en andere de url. Hij zou dus die "lege" velden moeten tracen als "geen link". M.a.w. hij ziet gewoon niet dat een veld leeg is, ook al is het gewoon leeg.

Weet iemand hoe ik dit kan oplossen ? Ik sta voor een raadsel.

Heedless
%Europe/Berlin %594 %2007, 15:15
Zijn de velden inderdaad echt leeg? Zit er geen spatie in o.i.d. en zijn ze ook niet 'undefined'? (want "" en undefined zijn niet hetzelfde).

Misschien kan je een klein stukje uit je xml laten zien?

houseofdreams
%Europe/Berlin %607 %2007, 15:35
Zijn de velden inderdaad echt leeg? Zit er geen spatie in o.i.d. en zijn ze ook niet 'undefined'? (want "" en undefined zijn niet hetzelfde).

Misschien kan je een klein stukje uit je xml laten zien?

Dat was natuurlijk het eerste waarnaar ik gekeken heb :) Maar ik heb het gevonden. Weet wel niet of dit een "heilige" oplossing is, maar het werkt nu wel voor mij ;)

Heb wat zitten zoeken met typeof(), en kwam tot de constatatie dat wat ik ook deed, de waarde van pLINK[i] (ook al was het voor het blote oog gewoon tekst) als type een Object() was.

Daarom heb ik het zo aangepast :

for (i = ; ....)
{
if (pLINK[i].toString() == "")
{
trace("geen link");
}
else
{
trace(pLINK[i]);
}
}

Wat ik ook getest heb, was even manueel een array aangemaakt :

var aR:Array = new Array("", "", "http://www.yahoo.com");

for (var i:Number = 0; i < aR.length; i++)
{
trace(typeof(aR[i]));
}

Hier gaf hij zonder de toString() toevoeging direct als veldtype "string". Waarom Flash tekst vanuit een XML in een array pusht als object is voor mij voorlopig nog een raadsel. Had ook geprobeerd om hem te forceren van de ingelezen XML waarde als string erin te zetten :

pLINK.push(XML.veld_id.toString);

Maar dat wou ook niet helpen...

EDIT : heb nu onddertussen ook de 2de fout gevonden, ik had :

pLINK.push(XML.veld_id.toString);

staan, ipv :

pLINK.push(XML.veld_id.toString());

Zo werkt het dus ook.. Hopelijk heb ik het hier niet te ingewikkeld gemaakt :O

Heedless
%Europe/Berlin %652 %2007, 16:39
pLINK.push(String(XML.veld_id)); kan ook. Ik vind dat soms wat duidelijker staan, want nu staat er: pLINK > daar push je iets in > namelijk een string > en dat is XML.veld_id