#c# #xml #winforms #combobox
#c# #xml #winforms #выпадающий список
Вопрос:
XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<name>John</name>
<salary>29000</salary>
</employee>
<employee>
<name>Harry</name>
<salary>35000</salary>
</employee>
</employees>
Здесь я заполняю имена сотрудников из XML-файла в выпадающем списке
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList colorList = doc.SelectNodes("employees/employee/name");
foreach (XmlNode Name in colorList)
{
FeedComboBox.Items.Add(Name.InnerText);
}
Чего я пытаюсь добиться, так это того, что если я выберу Джона из списка, мне нужно извлечь значение зарплаты Джона (29000) из XML-файла и отобразить его в текстовом поле
Ответ №1:
Это должно сработать
var root = XElement.Parse(stringxml);
var empName = "John"; // This will be the string you select from combobox
var query = root
.XPathSelectElements(string.Format("/employee[name='{0}']", empName))
.Select(et => new
{
salary = (string)et.Element("salary"),
});
var results = query.ToList();
TextBox.Text = results[0].salary; // Set the Salary to the textbox
Ответ №2:
Вместо этого просто выберите employee
элемент, и вы сможете получить доступ к его дочерним элементам через индексатор ( []
):
foreach(XmlNode employee in doc.SelectNodes("employees/employee"))
{
var name = employee["name"].InnerText;
var salary = employee["salary"].InnerText;
FeedComboBox.Items.Add($"{name} ({salary})");
}
Комментарии:
1. Это не соответствует моему требованию. В принципе, у меня есть строка с надписью ‘Harry’, поэтому я хочу извлечь зарплату (35000) сотрудника Harry из xml-файла и отобразить в текстовом поле.