2013-06-26 86 views
0

有人可以帮助我使用正确的LINQ语法从这个XML中提取状态吗?C#XML LINQ属性的属性

理想情况下,我想有以下打印出来:

状态:打开= 1

状态:挂起= 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