Bagaimana cara mendapatkan nilai tertentu dalam file XML ini menggunakan 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>

Bagaimana cara mendapatkan nilai ini:

http://www.sample2.com?

Saya mencoba menggunakan kode ini:

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();

tapi nilai Url adalah "". Saya juga punya ini:

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

person Paulo Flores    schedule 18.07.2012    source sumber
comment
Coba Url = (string)i.Element(serv + "group").Elements(media + "content").Last().Attribute("url").Value;   -  person Willem    schedule 18.07.2012
comment
Terima kasih Willem! Bekerja seperti pesona! :)   -  person Paulo Flores    schedule 18.07.2012
comment
Bagaimana cara mencocokkan namespace tanpa atribut xmlns:media="http://www.sampleX.com/" yang dideklarasikan di mana pun di XML Anda? Apakah itu dideklarasikan pada elemen yang tidak Anda tampilkan?   -  person JamieSee    schedule 18.07.2012
comment
Saya pikir ini hanya ekstrak file xml daftar item dengan namespace yang dideklarasikan di mana saja.   -  person Batuu    schedule 18.07.2012
comment
Batuu benar, saya hanya menunjukkan sebagian dari xmlnya   -  person Paulo Flores    schedule 18.07.2012
comment
Hai, apakah Anda ingin menandai jawaban yang membantu Anda sebagai diterima?   -  person Gert Arnold    schedule 20.07.2012


Jawaban (1)


Anda dapat menggunakan kueri LINQ ini:

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