using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace MediaBrowser.Dlna.PlayTo { public class uParser { public static IList ParseBrowseXml(XDocument doc) { if (doc == null) { throw new ArgumentException("doc"); } var list = new List(); var document = doc.Document; if (document == null) return list; var item = (from result in document.Descendants("Result") select result).FirstOrDefault(); if (item == null) return list; var uPnpResponse = XElement.Parse((String)item); var uObjects = from container in uPnpResponse.Elements(uPnpNamespaces.containers) select new uParserObject { Element = container }; var uObjects2 = from container in uPnpResponse.Elements(uPnpNamespaces.items) select new uParserObject { Element = container }; list.AddRange(uObjects.Concat(uObjects2).Select(CreateObjectFromXML).Where(uObject => uObject != null)); return list; } public static uBaseObject CreateObjectFromXML(uParserObject uItem) { return UpnpContainer.Create(uItem.Element); } } public class uParserObject { public XElement Element { get; set; } } }