SCIPIO-AEMILIANUS
aka Dubdidadu
Ich hab eine Frage, wie ich am geschicktesten eine XML-Datei folgendes Aufbaus auslese:
Am Anfang soll durch eine Funktion alle grade-Attribute ausgelesen werden und die doppelten entfernt werden, dass als Rückgabe folgendes als XMLList herauskommt:
Was ich eigentlich wissen will ist, ob es einen kürzeren weg gibt als ne eigene Suchfunktion zu schreiben, die jeden einzelnen eintrag gegen eine bestehende Liste mit bereitsgefundenen Ergebnissen abgleicht.
Vielen Dank im voraus.
##EDIT##
Eine kleine Erweiterung:
Dies soll oben beschriebene Aufgabe verrichten. Macht es jedoch nicht. Was ist an dem ganzen falsch?
Es geht jetzt darum eine Art Menü daraus zu basteln.<school>
<pupil firstName="Hans1" lastName="Jung4" grade="7" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans2" lastName="Jung3" grade="7" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans3" lastName="Jung2" grade="7" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans4" lastName="Jung1" grade="7" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans1" lastName="Jung4" grade="8" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans2" lastName="Jung3" grade="8" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans3" lastName="Jung2" grade="8" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans4" lastName="Jung1" grade="8" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans1" lastName="Jung4" grade="9" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans2" lastName="Jung3" grade="9" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans3" lastName="Jung2" grade="9" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans4" lastName="Jung1" grade="9" letter="B" image="hansjung.jpg"/>
</school>
Am Anfang soll durch eine Funktion alle grade-Attribute ausgelesen werden und die doppelten entfernt werden, dass als Rückgabe folgendes als XMLList herauskommt:
Dies brauch ich da ich die anderen Attribute auch noch benötige.<pupil firstName="Hans1" lastName="Jung4" grade="7" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans1" lastName="Jung4" grade="8" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans1" lastName="Jung4" grade="9" letter="A" image="hansjung.jpg"/>
Was ich eigentlich wissen will ist, ob es einen kürzeren weg gibt als ne eigene Suchfunktion zu schreiben, die jeden einzelnen eintrag gegen eine bestehende Liste mit bereitsgefundenen Ergebnissen abgleicht.
Vielen Dank im voraus.
##EDIT##
Eine kleine Erweiterung:
Code:
var currentXML:XML=<school>
<pupil firstName="Hans1" lastName="Jung4" grade="7" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans2" lastName="Jung3" grade="7" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans3" lastName="Jung2" grade="7" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans4" lastName="Jung1" grade="7" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans1" lastName="Jung4" grade="8" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans2" lastName="Jung3" grade="8" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans3" lastName="Jung2" grade="8" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans4" lastName="Jung1" grade="8" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans1" lastName="Jung4" grade="9" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans2" lastName="Jung3" grade="9" letter="A" image="hansjung.jpg"/>
<pupil firstName="Hans3" lastName="Jung2" grade="9" letter="B" image="hansjung.jpg"/>
<pupil firstName="Hans4" lastName="Jung1" grade="9" letter="B" image="hansjung.jpg"/>
</school>;
function searchItems(grade:String,letter:String,firstName:String,lastName:String):XML{
var xmlBuf:XML=new XML();
var i:int=0;
var u:int=0;
var z:int=0;
var xmlOut:XML=new XML();
if(grade==""){
// search through all elements inside FAMILY
for each (var object:XML in currentXML.*) {
u=0;
z=0;
if (object.name() == "pupil") {
while(u<xmlOut.child("*").length()){
trace(object.@grade);
if(object.@grade==xmlOut.child("*")[u].@grade){
z+=1;
}
u++;
}
trace(xmlOut);
if(z==0){
xmlOut.appendChild(object);
}
}
}
}
return xmlOut;
}
trace(searchItems("","","",""));
Dies soll oben beschriebene Aufgabe verrichten. Macht es jedoch nicht. Was ist an dem ganzen falsch?