我有一个xml文档,如下所示:
<RESPONSES>
<RESPONSE STATUS="OK">
<ALBUM>
<URL TYPE="COVERART" SIZE="THUMBNAIL">http://akamai-b.cdn.cddbp.net/cds/2.0/cover/60AA/2DF9/B94B/72C8_thumbnail_front.jpg</URL>
<URL TYPE="ARTIST_BIOGRAPHY">http://web.content.cddbp.net/cds/2.0?id=6F64C8E01EA6253B&client=10395648&class=biography&type=text/plain&tag=02sq63myXqi8O9GLtyVrTB2Q0HTdtZEIU0LuGDlIoDRvQGTE2lkKnsdQ</URL>
</ALBUM>
</RESPONSE>
<RESPONSES>
我需要获取COVERART URL和ARTIST_BIOGRAPHY URL的值,因此我需要获取属性TYPE =“COVERART”的元素URL的值以及属性TYPE =“的元素URL的值ARTIST_BIOGRAPHY“我无法弄清楚如何做到这一点(虽然我确定这是一个简单的答案; - )
我试过了两个:
var albums = new List<Album>();
try
{
albums = (from item in inputDoc.Descendants("ALBUM")
select new Album
{
Biography = (string)item.Element("URL").Attribute("TYPE"),
和
CoverArt = (string)item.Element("URL").Attribute("COVERART")
}).ToList();
并没有给我我正在寻找的东西。有人可以帮帮我!?
答案 0 :(得分:0)
您需要找到具有名为type的属性的元素,其值为“coverart”或“artist_biography”。你需要一个谓词:
List<Album> albums = xDoc
.Root
.Descendants("ALBUM")
.Select(e =>
new Album()
{
CoverArt = e
.Elements("URL")
.First(u => u.Attribute("TYPE").Value == "COVERART")
.Value
.ToString(),
ArtistBio = e
.Elements("URL")
.First(u => u.Attribute("TYPE").Value == "ARTIST_BIOGRAPHY")
.Value
.ToString()
}
).ToList();
注意我通常会在一行上有内部语句,但为了便于阅读,在SO上进行了扩展。