从组合框中选择项目时,从 xml 文件中获取数据到文本框。如何做到这一点?

Posted

技术标签:

【中文标题】从组合框中选择项目时,从 xml 文件中获取数据到文本框。如何做到这一点?【英文标题】:Fetch data from xml file to textbox on selecting an item from combobox. How can this be achieved? 【发布时间】:2019-07-30 18:13:58 【问题描述】:

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);

我想要实现的是,如果我从组合框中选择 John,我需要从 XML 文件中获取 John 的薪水 (29000) 的值并将其显示在文本框中

【问题讨论】:

【参考方案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)");

【讨论】:

这不符合我的要求。基本上,我有一个字符串说'Harry',所以我想从 xml 文件中获取员工 Harry 的薪水(35000)并显示在文本框中。

以上是关于从组合框中选择项目时,从 xml 文件中获取数据到文本框。如何做到这一点?的主要内容,如果未能解决你的问题,请参考以下文章

从组合框中选择项目时,如何从数据库中获取 ID 值?

Python Selenium从两个组合框中获取数据

从访问 vba 中的多值组合框中获取值

如何从我的SQL SERVER获取我的数据库列表,并使用javafx将其添加到组合框中

当用户从 MS Access 的组合框中选择“其他”时,如何显示输入表单?

如何在 C# 上使用数据库数据获取组合框上的范围值