Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在标签中显示xml信息_C#_Xml_Winforms - Fatal编程技术网

C# 在标签中显示xml信息

C# 在标签中显示xml信息,c#,xml,winforms,C#,Xml,Winforms,基本上,我可以将xml文件正确加载到listview中,但我希望用户能够单击listview中的项,并从它们的显示信息中找到关于该项的信息,这些信息不在listview中,而是xml 因此,我认为当用户单击项目时,我可以加载一个xml,并以某种方式获取该信息,但它不会在标签上显示任何内容。任何帮助都将不胜感激 XML: 代码: 创建一个模拟文件中数据的类。比如: public class Project { public string Code { get; set; } pub

基本上,我可以将xml文件正确加载到listview中,但我希望用户能够单击listview中的项,并从它们的显示信息中找到关于该项的信息,这些信息不在listview中,而是xml
因此,我认为当用户单击项目时,我可以加载一个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";
}