2013-06-26 2 views
0

Может ли кто-нибудь помочь мне с правильным синтаксисом LINQ, чтобы извлечь статусы из этого XML?C# XML LINQ Синтаксис по атрибутам

В идеале я хотел бы иметь следующие распечатан:

статусы: Open = 1

статусы: Pending = 2

статусы: Игнорирование = 3

статусы: Закрыто = 4

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <scope name="com"> 
    <scope name="company"> 
     <scope name="app"> 
     <scope name="app_monitor"> 
      <scope name="statuses"> 
      <entry name="Open">1</entry> 
      <entry name="Pending">2</entry> 
      <entry name="Ignored">3</entry> 
      <entry name="Closed">4</entry> 
      </scope> 
      <scope name="urgencies"> 
      <entry name="Critical">1</entry> 
      <entry name="Alarm">2</entry> 
      <entry name="Info">3</entry> 
      </scope>      
     </scope> 
     </scope> 
    </scope> 
    </scope> 
</configuration> 

Я пробовал разные варианты вещей, но h прежде чем, как далеко я получил:

XDocument Xdocument = new XDocument(); 
    var doc = XDocument.Load(@"c:\temp\app_sett.xml"); 
    var returnedvalues = from app_sett in doc.Descendants("scope") 
       where app_sett.Attribute("name").Value == "statuses" 
       select new         
       { 
        blah = app_sett.Attribute("name").Value, 
       }; 

ответ

2

Это звучит, как вам нужно, чтобы получить дочерние элементы соответствующей области видимости элемента. Например:

var query = doc.Descendants("scope") 
       .Where(x => (string) x.Attribute("name") == "statuses") 
       .Elements("entry") 
       .Select(entry => new { Name = (string) entry.Attribute("name"), 
             Value = (int) entry }); 
+0

Блестящий. Благодаря.!!!!!!!! – user2437909