Count child nodes of node matching listbox item

scarletwolf031

New Member
Im having a problem here with selected index change. My xml file contains module number, module name, assesments, credits etc. What im trying to achieve here is - some course details are loaded into listbox from xml (module name and code) but when user selects a module, label should display how many assessments that module has.Here is my XML file sample\[code\]<module> <moduleCode>ECWM618</moduleCode> <moduleTitle>Semantic and Social Web</moduleTitle> <credits>15</credits> <semester>2</semester> <assessmentDetails> <assessment> <assessmentName>Coursework1</assessmentName> <assessmentType>Coursework</assessmentType> <assessmentWeighting>25</assessmentWeighting> </assessment> <assessment> <assessmentName>Coursework2</assessmentName> <assessmentType>Coursework</assessmentType> <assessmentWeighting>25</assessmentWeighting> </assessment> <assessment> <assessmentName>Exam</assessmentName> <assessmentType>Exam</assessmentType> <assessmentWeighting>50</assessmentWeighting> </assessment> </assessmentDetails> </module>\[/code\]And here is the code i got\[code\]private void moduleSummaryBox_SelectedIndexChanged(object sender, EventArgs e) { // when module from modulelist is selected, it read all indicies assigned to the module. //!!!!!!!! it reads last node only :(? wtf im tired ...lol // // read data from modulelist string path = Directory.GetCurrentDirectory(); FileStream fs = new FileStream(@"myCourse.xml", FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); XmlReader moduleReader = XmlReader.Create(fs); moduleReader.Read(); while (moduleReader.Read()) { int assessmentNo = 0; bool match = false; moduleReader.MoveToElement(); if (moduleReader.Name == "assessmentName") { moduleReader.Read();// reads xml file. XmlNodeType nType = moduleReader.NodeType; //XmlNodeType Specifies the type of node. If node matches specified name = true. if (nType == XmlNodeType.Text)// if node type match XmlNodeType ( and there is some text in it) statement becomes true { this.assno.Text = (moduleReader.Value.ToString()); //set mcode label to matched node. } } if (moduleReader.Value.ToString() == moduleSummaryBox.Items[moduleSummaryBox.SelectedIndex].ToString()) { match = true; } if (match == true) { break; } } } \[/code\]Help appreciated thank you :) EDIT: This is what goes into listbox\[code\]moduleSummaryBox.Items.Clear(); XmlDocument doc = new XmlDocument(); doc.Load(@"myCourse.xml"); XmlNodeList levelList = doc.GetElementsByTagName("level"+l_level); foreach (XmlNode node in levelList) { XmlElement moduleElement = (XmlElement)node; XmlNodeList modules_individ = moduleElement.GetElementsByTagName("module"); foreach (XmlNode nodes in modules_individ) { XmlElement moduleSeperator = (XmlElement)nodes; string ll_moduleCode = moduleSeperator.GetElementsByTagName("moduleCode")[0].InnerText; string ll_moduleTitle = moduleSeperator.GetElementsByTagName("moduleTitle")[0].InnerText; moduleSummaryBox.Items.Add(ll_moduleCode+" : " + ll_moduleTitle+" "); } }\[/code\]
 
Back
Top