2011-02-02 114 views
0

我在为某个关键词搜索XML文件时遇到问题。C#和XML - 搜索XML文件

下面是一个示例XML文件

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

我有其中一个用户输入的一部分,或者说,他们要的那本书的全名GUI应用程序,它再通过XML文件去和找到正确的输入,并给出正确的结果。问题是我不知道如何做到这一点。

我已经尝试过使用XmlTextReader,我只是不知道如何,任何帮助将不胜感激。

谢谢。

回答

4

您可以使用LINQ到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查询。

+0

Thankyou,我会考虑使用LINQ。 – 2011-02-02 02:37:20

2

如果这些XML文件已经创建了更多的oo方法,那么可以使用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. 
} 
+0

我认为,查询与书籍列表相关,而不仅仅是书籍? – Raj 2012-04-20 14:20:04