【问题标题】:Searching by Name in XML file through LINQ in C# and displaying in GridView通过 C# 中的 LINQ 在 XML 文件中按名称搜索并在 GridView 中显示
【发布时间】:2011-06-16 16:16:14
【问题描述】:

在整个 Web 开发方面还很新,一上午的谷歌搜索和查看堆栈溢出为我指明了正确的方向,但我仍然遇到问题。

我有一个 XML 文件 Bricks.xml,其结构如下:

<?xml version="1.0"?>
<Links>
    <Table1
        Name="Bob Smith"
        Text="GO TEAM!!!"
        Location="Tennis Court"
    />
</Links>

我有一个文本框 (txtName) 和一个按钮 (btnSearch)。我希望能够从 txtName.text 获取输入并将其显示在我的网格视图中。我目前将所有这些都设置在面板中,其中一个面板用于 txtName 和 btnSearch,它始终可见。我有另一个面板,它带有拉取整个 XML 文件的网格视图,最后是第三个面板,它具有相同的网格视图,我打算将其用作“搜索结果”。我认为有可能读到这一点,然后重新加载已经显示的网格视图。

【问题讨论】:

    标签: c# xml linq search gridview


    【解决方案1】:

    因此,您需要执行类似的操作来搜索节点以找到具有特定名称的节点。然后你只需要对结果做任何你想做的事情......

    string nameToSearch = "Bob";
    string rawXML = null;
    
    using (var stream = new StreamReader(File.OpenRead("<YOUR_FILE_PATH>")))
    {
        rawXML = stream.ReadToEnd();
    }
    
    if (rawXML != null)
    {
        XDocument doc = XDocument.Parse(rawXML);
        XElement foundNode = doc.Descendants("Table1").Where(n => n.Attribute("Name").Value.Contains(nameToSearch)).FirstOrDefault();
    
        if (foundNode != null)
        {
            string name     = foundNode.Attribute("Name").Value;
            string text     = foundNode.Attribute("Text").Value;
            string location = foundNode.Attribute("Location").Value;
        }
    }
    

    【讨论】:

    • 谢谢。这很好用。我从这里跳下来,并且已经通过这种方式添加了很多功能。我从来没有想过使用 StreamReader 来解析文件。
    • 现在我实际上遇到了另一个问题。我似乎无法让 StreamReader 解析我的 XML,因为它不喜欢 URI
    • 无视,将其中的一些内容放入其中以使其正常工作。 dreamincode.net/code/snippet2140.htm
    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多