Jag är ganska färsk på XML och försöker få in i min trånga skalle hur jag hämtar data på ett bra sätt utan att göra om min XML-fil med namespaces eller liknande.
XML-filen ser ut på följande sätt
<School>
<Coordinates Latitude="59.361934" Longitude="18.144178"/>
<Area>
<Name>Lidingö, Sweden</Name>
<Description>Information om Lidingö i Sverige</Description>
</Area>
<Name>Rudbodaskolan, klass 2</Name>
<Description>Information rörande Rudbodaskolan</Description>
</School>
Det jag vill göra är att hämta Namnet på skolan utan att ange position som jag gör för tillfället. (Använder mig av Javascript, men det ser väl likadant ut oavsett språk)
För att hämta rätt data idag så gör jag på följande sätt
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("School");
for (var i = 0; i < markers.length; i++) {
markers[i].getElementsByTagName("Area")[0].getElementsByTagName("Name")[0].firstChild.nodeValue;
//Hämtar namnet på skolan för att populera rullisten
var schoolName = markers[i].getElementsByTagName("Name")[1].firstChild.nodeValue;
Hämtningen av "Name" från "Area" fungerar någorlunda tillfredsställande då jag alltid kommer att få ut rätt nod. Dock så när jag kör getElementsByTagName("Name") direkt under skolan så hämtar den även Name som ligger under Area. Vilket jag blir frustrerad över då jag måste ange position 1 istället för 0, och därmed gör det lätt att förstöra hämtningen om man ändrar i XML-filen.
Finns det något sätt att hämta Name som ligger direkt under <School> istället för att den hämtar alla instanser av Name oavsett hierarkisk position?
Jag skulle vilja ha något som t.ex. markers*.getElementByTagName("Name").firstChild.nodeValue; som enbart returnerar elementet som ligger direkt under <School>.
Ge mig också gärna tips och förslag på hur jag skulle kunna göra om XML-filen och hämtningar så att jag inte fortsätter jobba på vad jag förmodar är ett felaktigt sätt.*