2012-03-21 186 views
0

我想要做的是從xml文件中讀取一些數據,並在用戶單擊列表框中的某個項目時將數據分配給標籤。這是我嘗試過的代碼,代碼編譯但沒有任何反應,我的標籤。從XML讀取屬性

private void lbAllModules_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     XmlTextReader inforeader = new XmlTextReader(workingDir + @"\modules.xml"); 


     while (inforeader.Read()) 
     { 
      if ((inforeader.NodeType == XmlNodeType.Element) && (inforeader.Name == "modulecode")) 
      { 

       if (inforeader.HasAttributes) 
       { 
        lblCodeOut.Text = inforeader.GetAttribute(0); 
       } 


      } 

     } 
    } 
+1

上傳XML ...... – 2012-03-21 12:20:32

+0

是否有您所使用的笨重'XmlReader' API,而不是'XmlDocument'甚至更好'XDocument'理由嗎? – 2012-03-21 12:22:21

+0

XMLReader是我被教導如何做到這一點,我需要堅持使用這種方法 – nexus490 2012-03-21 12:47:22

回答

0

如果你想使用LINQ到XML:

XDocument loaded = XDocument.Load(@"C:\modules.xml"); 

// Query the data for first attribute of element 'modecode' 
var q = from c in loaded.Descendants("modulecode") 
     where c.HasAttributes 
     select (string)c.Attributes().FirstOrDefault(); 

foreach (var item in q) 
{ 
    Console.WriteLine(item);  
} 
0

確保您的節點被稱作正是 「modulecode」。比較區分大小寫。您可以使用

string.Compare(inforeader.Name,"modulecode", StringComparison.OrdinalIgnoreCase) == 0; 

用於不區分大小寫的比較。然後嘗試

if(inforeader.MoveToFirstAttribute()) 
    lblCodeOut.Text = inforeader.Value;