在我继承的项目中,我需要从使用 spark List 组件切换到使用 mx Tree 组件,以便能够将项目分组到目录中。我对 Flex/XML 很生疏,所以我想知道是否可以在正确的方向上推动如何处理这个问题。
我的问题(详情/数据详情如下):
如何从“学生”节点检测“学生组”节点?
树组件需要一个用于显示名称的字段。我必须在“studentGroup”节点和“student”节点之间有一个通用名称吗?
我完全做错了吗?
以前我的 XML 数据是扁平的(为了清楚起见,我已经删除了所有细节):
<studentList>
<student>
<studentName>Sam</studentName>
</student>
<student>
<studentName>Ruby</studentName>
</student>
</studentList>
新格式是团体和个别学生的混合:
<studentList>
<studentGroup>
<studentGroupName>Chess</studentGroupName>
<student>
<studentName>Betty</studentName>
</student>
</studentGroup>
<student>
<studentName>Sam</studentName>
</student>
<student>
<studentName>Ruby</studentName>
</student>
</studentList>
当前正在使用以下(再次简化的)代码解析 XML:
for each (var prop:XML in studentsXML.file){
tempArray = new ArrayCollection();
for each(var studentProp:XML in prop.studentList.student){
tempStudent = new Student(studentProp.studentName);
tempArray.addItem(tempStudent);
}
}
我需要更改它,以便为“studentGroups”做一件事,而“students”则像上面一样处理它。在伪代码中它看起来像下面但是我在语法上绊倒了(或者我完全偏离了轨道?)。
for each (var prop:XML in studentsXML.file){
tempArray = new ArrayCollection();
for each(var studentProp:XML in prop.studentList){
//HOW DO I DETECT A StudentGroup FROM A Student NODE?
if (studentList.studentGroup){
//student group
tempStudentGroup = new StudentGroup(studentProp.studentGroupName);
for each(var student:XML in studentList.studentGroup){
tempStudent = new Student(studentProp.studentName);
tempStudentGroup.add(tempStudent);
}
tempArray.addItem(tempStudentGroup);
}else{
//single student
tempStudent = new Student(studentProp.studentName);
tempArray.addItem(tempStudent);
}
}
}