How to get the child elementsvalue , when the parent element contains different number of child Elem
- by Subhen
Hi,
I have the following XML Structure:
<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/">
<item id="1268" parentID="20" restricted="1">
<upnp:class>object.item.audioItem.musicTrack</upnp:class>
<dc:title>Hey</dc:title>
<dc:date>2010-03-17T12:12:26</dc:date>
<upnp:albumArtURI dlna:profileID="PNG_TN" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0">URL/albumart/22.png</upnp:albumArtURI>
<upnp:icon>URL/albumart/22.png</upnp:icon>
<dc:creator>land</dc:creator>
<upnp:artist>sland</upnp:artist>
<upnp:album>Change</upnp:album>
<upnp:genre>Rock</upnp:genre>
<res protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="9527987" duration="0:03:58">URL/1268.mp3</res>
<res protocolInfo="http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_CI=01;DLNA.ORG_FLAGS=00f00000000000000000000000000000" colorDepth="24" resolution="160x160">URL/albumart/22.png</res>
</item>
<item id="1269" parentID="20" restricted="1">
<upnp:class>object.item.audioItem.musicTrack</upnp:class>
<dc:title>Indian </dc:title>
<dc:date>2010-03-17T12:06:32</dc:date>
<upnp:albumArtURI dlna:profileID="PNG_TN" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0">URL/albumart/13.png</upnp:albumArtURI>
<upnp:icon>URL/albumart/13.png</upnp:icon>
<dc:creator>MC</dc:creator>
<upnp:artist>MC</upnp:artist>
<upnp:album>manimal</upnp:album>
<upnp:genre>Rap</upnp:genre>
<res protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="8166707" duration="0:03:24">URL/1269.mp3</res>
<res protocolInfo="http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_CI=01;DLNA.ORG_FLAGS=00f00000000000000000000000000000" colorDepth="24" resolution="160x160">URL/albumart/13.png</res>
</item>
<item id="1277" parentID="20" restricted="1">
<upnp:class>object.item.videoItem.movie</upnp:class>
<dc:title>IronMan_TeaserTrailer-full_NEW.mpg</dc:title>
<dc:date>2010-03-17T12:50:24</dc:date>
<upnp:genre>Unknown</upnp:genre>
<res protocolInfo="http-get:*:video/mpeg:DLNA.ORG_PN=(NULL);DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="98926592" resolution="1920x1080" duration="0:02:30">URL/1277.mpg</res>
</item>
</DIDL-Lite>
Here in the last Elemnt Item , there are few missing elements like icon,albumArtURi ..etc.
Now whhile Ity to access the Values by following LINQ to XML query,
var vAudioData = from xAudioinfo in xResponse.Descendants(ns + "DIDL-Lite").Elements(ns + "item").Where(x=>!x.Elements(upnp+"album").l
orderby ((string)xAudioinfo.Element(upnp + "artist")).Trim()
select new RMSMedia
{
strAudioTitle = ((string)xAudioinfo.Element(dc + "title")).Trim(),//((string)xAudioinfo.Attribute("audioAlbumcoverImage")).Trim()=="" ? ((string)xAudioinfo.Element("Song")).Trim():""
};
It show object reference is not set to reference of object. I do undersrand this is because of missing elements, is there any way I can pre-check if the elements exist , or check the number of elemnts inside item or any other way.
Any help is deeply appreciated.
Thanks,
Subhen