2011-02-02 4 views
0

У меня возникла проблема при поиске файла XML для определенного ключевого слова.C# и XML - Поиск файла XML

Ниже приведен пример XML-файл

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

У меня есть приложение с графическим интерфейсом, в котором пользователь вводит часть или полное название книги, которую они хотят, он затем проходит через файл XML и находит правильное и выдает правильные результаты. Проблема в том, что я понятия не имею, как это сделать.

Я пробовал использовать XmlTextReader, я просто не знаю, как, любая помощь будет принята с благодарностью.

Thankyou.

ответ

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(); 

Вы можете написать LINQ запросы к Book объектов.

+0

Thankyou, я изучу использование LINQ. –

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. 
} 
+0

Я думаю, запрос связан со списком книг, а просто с книгой? – Raj

Смежные вопросы