我正在尝试使用我的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>
答案 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中获得重复的项目