2011-02-03 74 views
0

我从XmlSerialization升级到Linq-to-xml,发现很难从此结构中获取对象。XDocument LINQ复杂语法

我从这篇文章XmlSerializer - Deserialize different elements as collection of same element

但要得到一个空值试图为下面的结构做这个尝试的建议。谢谢你的帮助。

var hbs = from f in doc.Descendants("cb").Descendants() 
         select new Hb(f.Attribute("host").Value); 






public class Hb 
{ 
     public string a{ get; set; } 
     public string aKey { get; set; } 
     public string bKey { get; set; } 
} 





<cb rootElement><Hb xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> 


     <host>host01</host> 

     <keyF> 
     <a>1</a> 
     <aKey>job_id</aKey> 
     <bKey>883b196a-6e2d-462a-9e3a-8a2021585629</bKey> 
     </keyF> 

     <field> 
     <a>1</a> 
     <aKey>asset_state</aKey> 
     <bKey>STOPPED</bKey> 
     </field> 

     <field> 
     <a>1</a> 
     <aKey>channel</aKey> 
     <bKey>1</bKey> 
     </field> 

     <field> 
     <a>1</a> 
     <aKey>timecode_out</aKey> 
     <bKey>00:00:00.00</bKey> 
     </field> 

     <field> 
     <a>1</a> 
     <aKey>% Processor Time 0</aKey> 
     <bKey>0.33</bKey> 
     </field> 


    </Hb> 
</cb> 

回答

2

host是一个Element(),不是Attribute()

此外,编写doc.Descendants("cb").Descendants()将返回<cb>内的任何位置的每个元素。
您可能想要更具体的电话

+0

排序。干杯! – bizl 2011-02-03 17:02:42