我编写了将值从 xml 文件加载到textBoxes
.
private void load(TreeNodeMouseClickEventArgs e)
{
XDocument doc = XDocument.Load(@"test.xml");
string nodeName = e.Node.Text;
var data = from q in doc.Descendants("dog")
where (string)q.Attribute("name") == nodeName
select new Data
{
name = q.Attribute("name").Value,
breed = q.Element("breed").Value,
sex = q.Element("sex").Value
};
foreach (var element in data)
{
textBox1.Text = element.name;
textBox2.Text = element.breed;
comboBox1.Text = element.sex;
}
}
只要我不添加另一只具有相同name
但不同的狗,它就可以正常工作breed
。我的 xml 文件如下所示:
<dogs>
<dog name="Mike">
<breed>dachshund</breed>
<sex>true</sex>
</dog>
<dog name="Mike">
<breed>husky</breed>
<sex>true</sex>
</dog>
</dogs>
当我尝试从第二个节点加载值时,没有任何反应,因为Mike
之前找到了名为的条目。尝试使用列表,但它不起作用(或者只是我做错了什么)。我想允许这种“重复”,只有 1:1 的重复是 forriben (已经写过这部分并且它有效)。如果有办法以breed
与我获取类似的方式获取name
,它将解决问题 - 只需where
在查询中添加另一个。
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
nodeName = e.Node.Text;
}
这就是我得到的方式name
- 通过单击treeView
. 如果有多个名称相同的条目,它只会加载最新的。所以我的问题是:如何处理?很明显,可以有狗叫汤姆,品种腊肠和狗叫汤姆,面包哈士奇。