从 XML 填充组合框

本文关键字:组合 填充 XML | 更新日期: 2023-09-27 18:30:40

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

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>

从 XML 填充组合框

我认为您没有在正确的 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中获得重复的项目