0

XML array element benaderen via attribuut-variabele

Jansen, Stefan 6 jaar geleden in Algemeen bijgewerkt door Ekaterina (head of support) 6 jaar geleden 0
Is het mogelijk met XML als onderstaand voorbeeld het juiste weerstation te benaderen adhv het attribuut 'id'?
In PHP zou het volgende werken bijvoorbeeld: …..weerstations->weerstation[@id="6273"]

Ik zie in iRidium voorbeelden wel gebruik van het @ bij XML-attribute referenties, maar krijg het nog niet werkend.
Uiteraard kan ik de arrayelementen wel gewoon benaderen via weerstation[nr], maar als de volgorde dan eens veranderd bij de xml-bron, moet ik de code ook aanpassen. Een zoekscriptje kan uiteraard ook, maar dat is m'n vraag niet :)

<weerstations>
<weerstation id="1846">
<stationcode>
1846
</stationcode>
</weerstation>
<weerstation id="6273">
<stationcode>
6273
</stationcode>
</weerstation>
<weerstation id="3120">
<stationcode>
3120
</stationcode>
</weerstation>
</weerstations>
Hallo,


Gisteren nog even nagevraagd bij de ontwikkelaars en het blijkt niet mogelijk om dit op de 'php manier' te doen.
Wordt dus toch een loopje waarin je bekijkt wat het id is. :D


Bedankt voor het uitzoeken.
Ik had vergeten te noemen dat het sowieso al werkt door de array van weerstations te benaderen via de volgorde-index; 'k heb alleen gemerkt dat de bron hier nog wel eens verandering in brengt (of iRidium leest ze niet consequent in), waardoor je dus zo maar ineens een ander weerstation op die index hebt staan. Misschien uiteindelijk toch maar een zoekscriptje dus :)

(…).weerstations.weerstation[1].(…)  // in het voorbeeld hieronder zou je dan weerstation met ID 6273 uitlezen

Ik ben wel benieuwd waar het @ in XML-benadering dan voor is; zal nog even kijken waar ik dat example had gevonden. Ging om weerdata vanaf Yahoo, en daar gebruiken ze @'s in de iRidium-code. Benaderen van een attribuut (property) van een XML-element ben ik nog niet achter namelijk; wellicht is het daarvoor?

Het '@' is inderdaad om de waarde van het gespecificeerde attribuut te benaderen.
Hoe zou de syntax er dan uit zien als ik in het verhaal van m'n eerste post het ID eruit zou willen halen?

xmlData.Weerstations.Weerstation[xx]("@id")…?! of misschien:xmlData.Weerstations.Weerstation[xx]["@id"]…?

Dat was me uit het voorbeeld die ik het gedownload niet duidelijk, omdat de bron xml data daarvan een zootje is.
Voorbeeld:




IR.AddListener(IR.EVENT_START,0,function()
{
    IR.Log("ID of child 1 is: " + xmldata.ROOT.CHILD[0]['@ID']);
    IR.Log("ID of child 2 is: " + xmldata.ROOT.CHILD[1]['@ID']);
});


var xmldata = new XML("<ROOT><CHILD ID='1'></CHILD><CHILD ID='2'></CHILD></ROOT>");