从XML填充ComboBox

时间:2016-01-16 07:16:31

标签: c# xml visual-studio combobox

我正在尝试使用我的XML文件中的字段填充C#中的Combobox,但没有运气......我不知道这里有什么问题(它没有显示任何内容):

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("Baza_de_cunostinte.xml");

        var dataSource = new List<Persoane>();
        string PersoanaPlacuta;

        foreach (XmlNode node in doc.DocumentElement)
        {
            string persoanaPlacuta = node["PersoanaPlacuta"].InnerText.Replace("\"", "");

            comboBox1.Items.Add(persoanaPlacuta);
        }
     }

这是XML文件:

 <root>
  <Persoane>
    <Nume>"Bob"</Nume>
    <IsMale>true</IsMale>
    <Varsta>30</Varsta>
    <PersoanaPlacuta>"Iulia"</PersoanaPlacuta>
  </Persoane>

  <Persoane>
    <Nume>"Bogdan"</Nume>
    <IsMale>true</IsMale>
    <Varsta>28</Varsta>
    <PersoanaPlacuta>"Ana"</PersoanaPlacuta>
  </Persoane>

</root>

1 个答案:

答案 0 :(得分:0)

我认为您没有在正确的Xml节点地址中搜索。您应该使用完整地址来查找目标节点。

使用XmlNodeList获取具有完整地址的所有节点,然后遍历其项目:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    XmlDocument doc = new XmlDocument();
    doc.Load("Baza_de_cunostinte.xml");

    var dataSource = new List<Persoane>();
    string PersoanaPlacuta;


     XmlNodeList xmlNodeList = doc.SelectNodes("//root//Persoane");
     foreach (XmlNode node in xmlNodeList)
     {
        string PersoanaPlacuta = node.ChildNodes[3].InnerText.Replace("\"", "");
        comboBox1.Items.Add(PersoanaPlacuta);
     }
}

您也可以像这样更改foreach循环:

foreach (string PersoanaPlacuta in from XmlNode node in xmlNodeList 
                            select node.ChildNodes[3].InnerText.Replace("\"", ""))
{
    comboBox1.Items.Add(PersoanaPlacuta);
}

注意:您最好在第一行添加comboBox1.Items.Clear();,否则您将在ComboBox中获得重复的项目