uParser.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Xml.Linq;
  5. namespace Emby.Dlna.PlayTo
  6. {
  7. public class uParser
  8. {
  9. public static IList<uBaseObject> ParseBrowseXml(XDocument doc)
  10. {
  11. if (doc == null)
  12. {
  13. throw new ArgumentException("doc");
  14. }
  15. var list = new List<uBaseObject>();
  16. var document = doc.Document;
  17. if (document == null)
  18. return list;
  19. var item = (from result in document.Descendants("Result") select result).FirstOrDefault();
  20. if (item == null)
  21. return list;
  22. var uPnpResponse = XElement.Parse((String)item);
  23. var uObjects = from container in uPnpResponse.Elements(uPnpNamespaces.containers)
  24. select new uParserObject { Element = container };
  25. var uObjects2 = from container in uPnpResponse.Elements(uPnpNamespaces.items)
  26. select new uParserObject { Element = container };
  27. list.AddRange(uObjects.Concat(uObjects2).Select(CreateObjectFromXML).Where(uObject => uObject != null));
  28. return list;
  29. }
  30. public static uBaseObject CreateObjectFromXML(uParserObject uItem)
  31. {
  32. return UpnpContainer.Create(uItem.Element);
  33. }
  34. }
  35. }