C#和XML - 搜索XML文件

时间:2011-02-02 02:33:42

标签: c# xml search

我在搜索某个关键字的XML文件时遇到了问题。

这是一个示例XML文件

<books>
    <book>
        <name>BookName</book>
        <price>BookPrice</price>
    </book>
</books>

我有一个GUI应用程序,用户输入他们想要的书的一部分或全名,然后通过XML文件找到正确的条目,并给出正确的结果。问题是我不知道该怎么做。

我尝试过使用XmlTextReader,我只是不知道如何,任何帮助都会非常感激。

三江源。

2 个答案:

答案 0 :(得分:4)

您可以使用LINQ to XML:

var xml = new XDocument(...);
var books = xml.Descendants("book");
var matches = books.Where(b => 
    b.Element("name").Value.IndexOf(str, StringComparison.CurrentCultureIgnoreCase) >= 0
);

为了更容易使用,您应该创建一个Book类来存储数据 然后你可以写

List<Book> books = xml.Descendants("book")
                      .Select(x => new Book(
                        x.Element("name").Value,
                        (decimal)x.Element("price")
                   ).ToList();

然后,您可以针对Book对象编写LINQ查询。

答案 1 :(得分:2)

如果这些是你创建的XML文件,那么更多的方法是使用System.Xml.Serialization.XmlSerializer来保存然后将XML文档加载到Book类中,然后查询你的类。

using System.Xml.Serialization;
using System.IO;

// Load the book from the file.
XmlSerializer serializer = new XmlSerializer(typeof(Book));
reader = new StreamReader(filePathName);
Book book = (Book)serializer.Deserialize(reader);
reader.Close();

if (book.Name.Contains(myQuery))
{
    // We have a match.
}