2011-04-14 92 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; 
    }