2013-05-13 4 views
0

У меня есть XML-документ здесь:Поиск и фильтрация данных XML

<?xml version="1.0" encoding="utf-8" ?> 
<CATALOG> 
    <CD> 
    <TITLE>Empire Burlesque</TITLE> 
    <ARTIST>Bob Dylan</ARTIST> 
    <COUNTRY>USA</COUNTRY> 
    <COMPANY>Columbia</COMPANY> 
    <PRICE>10.90</PRICE> 
    <YEAR>1985</YEAR> 
    </CD> 
    <CD> 
    <TITLE>Hide your heart</TITLE> 
    <ARTIST>Bonnie Tyler</ARTIST> 
    <COUNTRY>UK</COUNTRY> 
    <COMPANY>CBS Records</COMPANY> 
    <PRICE>9.90</PRICE> 
    <YEAR>1988</YEAR> 
    </CD> 
    <CD> 
    <TITLE>Test Title 1</TITLE> 
    <ARTIST>Test Name 1</ARTIST> 
    <COUNTRY>Test Country 1</COUNTRY> 
    <COMPANY>Test Company 1</COMPANY> 
    <PRICE>100.00</PRICE> 
    <YEAR>1985</YEAR> 
    </CD> 
    <CD> 
    <TITLE>Test Title 3</TITLE> 
    <ARTIST>Test Name 3</ARTIST> 
    <COUNTRY>Test Country 3</COUNTRY> 
    <COMPANY>Test Company 3</COMPANY> 
    <PRICE>1.99</PRICE> 
    <YEAR>1984</YEAR> 
    </CD> 
    <CD> 
    <TITLE>Test Title 2</TITLE> 
    <ARTIST>Test Name 2</ARTIST> 
    <COUNTRY>Test Country 2</COUNTRY> 
    <COMPANY>Test Company 2</COMPANY> 
    <PRICE>19.99</PRICE> 
    <YEAR>1985</YEAR> 
    </CD> 
</CATALOG> 

То, что я пытаюсь сделать, это найти все диски, которые имеют год 1985. Я очень новичок в LINQ к XML и Я не имею понятия что я делаю. Поскольку большинство интернет-ресурсов являются очень конкретным примером, у меня возникают проблемы с его применением к моему примеру.

Вот C#, что я закодированы до сих пор:

namespace ReadingXML 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      XElement xelement = XElement.Load("..\\..\\music.xml"); 
      IEnumerable<XElement> music = xelement.Elements(); 
      /*// Read the entire XML 
      foreach (var item in catalogues) 
      { 
       Console.WriteLine(item); 
      } 

      Console.ReadLine();*/ 

      var query = from item in music.Descendants("CD") 
         select new { year = item.Element("YEAR").Equals(1985) }; 

      foreach (var item in query) 
       Console.WriteLine(item.ToString()); 

      Console.ReadLine(); 
     } 
    } 
} 

Может кто-то пожалуйста, скажите мне, как я могу добиться того, что я пытаюсь сделать, и/или почему мой код не работает?

ответ

1
XDocument X = XDocument.Load(@"XMLFileLocation"); 
var CDsIn1985 = X.Element("CATALOG").Elements("CD").Where(E => E.Element("YEAR").Value == "1985"); 

foreach (var item in CDsIn1985) 
{ 
    Console.WriteLine(String.Format("Title : {0}, Artist : {1}", item.Element("TITLE").Value, item.Element("ARTIST").Value)); 
} 
+0

Большое вам спасибо! –

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