C# 在标签中显示xml信息
基本上,我可以将xml文件正确加载到listview中,但我希望用户能够单击listview中的项,并从它们的显示信息中找到关于该项的信息,这些信息不在listview中,而是xmlC# 在标签中显示xml信息,c#,xml,winforms,C#,Xml,Winforms,基本上,我可以将xml文件正确加载到listview中,但我希望用户能够单击listview中的项,并从它们的显示信息中找到关于该项的信息,这些信息不在listview中,而是xml 因此,我认为当用户单击项目时,我可以加载一个xml,并以某种方式获取该信息,但它不会在标签上显示任何内容。任何帮助都将不胜感激 XML: 代码: 创建一个模拟文件中数据的类。比如: public class Project { public string Code { get; set; } pub
因此,我认为当用户单击项目时,我可以加载一个xml,并以某种方式获取该信息,但它不会在标签上显示任何内容。任何帮助都将不胜感激 XML: 代码:
创建一个模拟文件中数据的类。比如:
public class Project
{
public string Code { get; set; }
public string Name { get; set; }
}
然后,将XML文件读入一个列表。请看本教程:
在ListView SelectedIndexChanged中,您可以访问列表的适当索引,以显示标签的适当值
codeLabel.Text = _projects[listView1.FocusedItem.Index].Code;
使用
写:
protected string GetName(string code)
{
var item = XElement.Load("XMLfile1.xml").GetEnumerable("test", x =>
new
{
Code = x.Get("code", string.Empty),
Name = x.Get("name", string.Empty)
})
.FirstOrDefault(i => i.Code == code);
if(null != item)
return item.Name;
return "Item not found";
}
这将从文件中查找列表,检查每个列表,直到找到正确的代码,然后返回
名称
值。然后将该值放入控件中。如果我错误地认为您正在按名称搜索,只需将FirstOrDefault行中的代码与return item.name行交换。测试节点的值
属性为空(它只包含子节点,没有文本)。我认为您应该更改代码,以便从测试开始到读取其结束标记为止累积文本(通过声明,您可以在MSDN上看到一个示例)
作为替代(如果XML文件不大),可以考虑使用或简单地(更容易阅读,并且总是可以有任何节点)。举个例子,你可以看看这个
关于如何解析XML的简短列表,请阅读(我认为这不是很好,但至少是一个…列表)。什么是“工作不正常”?编译时错误?运行时错误?什么都没发生?我没有检查代码,但在您的示例中,您从中读取的值XmlTextReader不会出现在任何地方(reader.read();codelabel.Text=“s”)。当我在列表视图中按某个项时,它不会显示任何内容,这就是为什么我问他们是否有办法让程序知道我单击的是哪个项,并在标签上打印其子项
private List<Project> _projects;
foreach(Project proj in _projects)
{
listView1.Items.Add(proj.Name);
}
codeLabel.Text = _projects[listView1.FocusedItem.Index].Code;
protected string GetName(string code)
{
var item = XElement.Load("XMLfile1.xml").GetEnumerable("test", x =>
new
{
Code = x.Get("code", string.Empty),
Name = x.Get("name", string.Empty)
})
.FirstOrDefault(i => i.Code == code);
if(null != item)
return item.Name;
return "Item not found";
}