วิธีรับค่าที่แน่นอนในไฟล์ XML นี้โดยใช้ XDocument

<item>
 <title>Lorem Ipsum</title>
 <media:group>
   <media:content url = "http://www.sample.com" rate = "0" />
   <media:content url = "http://www.sample1.com" rate = "1" />
   <media:content url = "http://www.sample2.com" rate = "2" />
 </media:group>
</item>

ฉันจะได้รับค่านี้ได้อย่างไร:

http://www.sample2.com?

ฉันลองใช้รหัสนี้:

var query = from i in loadedData.Descendants("item")
 select new Site
 {
  Title = (string)i.Element("title"),
  Url = (string)i.Element(serv + "group").Elements(media + "content").Last()
 };
 site = query.ToList();

แต่ค่าของ Url คือ "" ฉันยังมีสิ่งนี้:

private static readonly XNamespace media = "http://www.sampleX.com/";

person Paulo Flores    schedule 18.07.2012    source แหล่งที่มา
comment
ลอง Url = (string)i.Element(serv + "group").Elements(media + "content").Last().Attribute("url").Value;   -  person Willem    schedule 18.07.2012
comment
ขอบคุณวิลเล็ม! ทำงานเหมือนมีเสน่ห์! :)   -  person Paulo Flores    schedule 18.07.2012
comment
มันจะจับคู่เนมสเปซโดยไม่มีแอตทริบิวต์ xmlns:media="http://www.sampleX.com/" ที่ประกาศไว้ที่ใดก็ได้ใน XML ของคุณได้อย่างไร มีการประกาศในองค์ประกอบที่คุณไม่ได้แสดงหรือไม่?   -  person JamieSee    schedule 18.07.2012
comment
ฉันคิดว่านี่เป็นเพียงการแยกไฟล์ xml รายการรายการที่มีการประกาศเนมสเปซไม่ว่าอย่างไรก็ตาม   -  person Batuu    schedule 18.07.2012
comment
Batuu พูดถูก ฉันแสดง xml เพียงบางส่วนเท่านั้น   -  person Paulo Flores    schedule 18.07.2012
comment
สวัสดี คุณต้องการทำเครื่องหมายคำตอบที่ช่วยให้คุณได้รับการยอมรับหรือไม่?   -  person Gert Arnold    schedule 20.07.2012


คำตอบ (1)


คุณสามารถใช้แบบสอบถาม LINQ นี้:

var list = loadedData.Descendants("item")
                     .Select(e => new Site() 
                                  {
                                   Title = e.Element("title")
                                            .Value, 
                                   Url = e.Descendants(media + "content")
                                          .Last()
                                          .Attribute("url")
                                          .Value
                                  })
                     .ToList();
person Batuu    schedule 18.07.2012