将XML数据导入combobox

我有一个带有3个combobox和一个XML文件的Windows窗体,如下所示

     Ctrl   Alt   Shift       Ctrl   Alt   Shift       a   b   c     

所以我想在combobox1中显示所有key1,在combox2中显示所有key2,依此类推。所以这样做但不是真的有效

 DataSet dsSet = new DataSet(); dsSet.ReadXml("C:\\Users\\jackandjill\\Documents\\Visual Studio 2010\\Projects\\highlite\\highlite\\keys.xml"); comboBox1.DataSource = dsSet.Tables["keys"]; comboBox1.DisplayMember = "key1"; 

我更喜欢使用Linq2XML:

将数据加载到XDocument
从文件加载:

 var xmlDocument = XDocument.Load(fileName); 

或从字符串加载

 var xmlDocument = XDocument.Parse( @"     Ctrl   Alt   Shift       Ctrl   Alt   Shift       a   b   c    "); 

然后,您可以选择所需的项目

 var mainItems = from key in xmlDocument.Descendants("key1") select key.Value; var secKeyItems = from key in xmlDocument.Descendants("key2") select key.Value; var alphaItems = from key in xmlDocument.Descendants("key3") select key.Value; 

您现在可以将每个组合绑定到选定的结果,如下所示:

 comboBox1.DataSource = mainItems.ToList(); 

您可能想要清洗XML(删除换行符和空格)

 var mainItems = from key in xmlDocument.Descendants("key1") select key.Value.Trim(); var secKeyItems = from key in xmlDocument.Descendants("key2") select key.Value.Trim(); var alphaItems = from key in xmlDocument.Descendants("key3") select key.Value.Trim(); 

Usinq LINQ To XML:

 var xml = XElement.Parse( @"    Ctrl   Alt   Shift       Ctrl   Alt   Shift       a   b   c    "); var key1 = xml.Descendants("key1"); foreach (var key in key1) comboBox1.Items.Add(key.Value.Trim()); var key2 = xml.Descendants("key2"); foreach (var key in key2) comboBox2.Items.Add(key.Value.Trim()); //Do the same for other keys...