2012-03-30 3 views
-3

Учитывая XML ниже, мне нужно разобрать его и вывести имена всех книг и имя автора, если кто-либо из авторов из США.Анализ XML с использованием LINQ

<?xml version="1.0" encoding="iso-8859-1"?> 
<bookstore> 
    <categories> 
    <category>Cooking</category> 
    <category>Children</category> 
    <category>Fiction</category> 
    </categories> 
    <books> 
    <book> 
     <title>Everyday Italian</title> 
     <authors> 
     <author> 
      <name>Giada De Laurentiis</name> 
      <country>USA</country> 
     </author> 
     </authors> 
     <price>30.00</price> 
    </book> 
    <book> 
     <title>XQuery Kick Start</title> 
     <authors> 
     <author> 
      <name>James McGovern</name> 
      <country>Sweden</country> 
     </author> 
     <author> 
      <name>Per Bothner</name> 
      <country>USA</country> 
     </author> 
     </authors> 
     <price>49.99</price> 
    </book> 
    </books> 
</bookstore> 

Как это сделать?

ответ

2
var doc = XDocument.Parse(@"Your giant xml string here"); 
var books = 
    doc 
     .Descendants("book") 
     .Select(bookElement => 
     new 
     { 
      Title = bookElement.Descendants("title").Single().Value, 
      Authors = bookElement.Descendants("author") 
       .Where(authorElement => authorElement.Descendants("country").Single().Value == "USA") 
       .Select(authorElement => authorElement.Descendants("name").Single().Value) 
     }); 

foreach(var book in books) 
{ 
    Console.WriteLine("Book: " + book.Title); 
    Console.WriteLine("Authors: " + string.Join(",", book.Authors)); 
} 
+0

Спасибо, Джеймс, который решил это – James

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