2011-04-14 74 views
0

嗨,我有一个C#窗体,它有两个列表框。左侧包含可供注册的16个学生模块代码的列表。用户从左侧选择一个模块以转移到右侧框。我已经做到了这一点,模块代码在点击选择按钮时进行传输。选择XML文件的某些部分

一旦模块被转移,我需要点击它并打印出一个标签(放在它的右边)XML文件中保存的全部模块细节。

我能够通读XML文件的内容并将其输出到标签(所有内容)。我需要做的只是将“SELECTED模块”的详细信息打印到标签上。所以我必须以某种方式读取XML文件并挑选用户选择的特定模块/模块?所以,如果他/她选择了8个模块,那么我只想让所有这些细节显示在标签上?

+0

XML代码片段在这里会有很多帮助。您可以使用xpath表达式来选择XML数据中的某个节点。 – khachik 2011-04-14 18:11:23

回答

0

在MSDN上查找System.Xml.XmlDocument或System.Xml.Linq.XDocument的文档。 如果你的课程是一个XML elementm你的代码可能是这样的:

XmlDocument doc = new XmlDocument();    
     doc.Load(stream); // you can load it from stream, textreader or use LoadXml to init it from string 
     XmlNodeList courseNodes = doc.DocumentElement.SelectNodes("/rootelement/courseelement"); // provide a valid Xpath here 
     //work with courseNodes 
0
var selectedNodes = doc.Descendants("node") 
    .Where(x => (string)x.Attribute("type") == "selected1" || (string)x.Attribute("type") == "selected2" || etc...) 
    .ToList(); 
0

你可以使用LINQ到XML。 这是一个小样本

 private const string modulesXml = 
     "<modules><module id =\"m1\">data1</module><module id =\"m2\">data2</module><module id =\"m3\">data3</module></modules>"; 

    public string GetModule(string id) 
    { 
     var modules = XDocument.Parse(modulesXml); 
     return modules.Descendants("module").First(n => n.Attribute("id").Value == id).Value; 
    }