BoxSetXmlParser.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Controller.Entities.Movies;
  3. using MediaBrowser.Controller.Providers;
  4. using MediaBrowser.Model.Logging;
  5. using System.Collections.Generic;
  6. using System.Xml;
  7. using MediaBrowser.Model.IO;
  8. using MediaBrowser.Model.Xml;
  9. namespace MediaBrowser.LocalMetadata.Parsers
  10. {
  11. public class BoxSetXmlParser : BaseItemXmlParser<BoxSet>
  12. {
  13. protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<BoxSet> item)
  14. {
  15. switch (reader.Name)
  16. {
  17. case "CollectionItems":
  18. using (var subReader = reader.ReadSubtree())
  19. {
  20. FetchFromCollectionItemsNode(subReader, item);
  21. }
  22. break;
  23. default:
  24. base.FetchDataFromXmlNode(reader, item);
  25. break;
  26. }
  27. }
  28. private void FetchFromCollectionItemsNode(XmlReader reader, MetadataResult<BoxSet> item)
  29. {
  30. var list = new List<LinkedChild>();
  31. reader.MoveToContent();
  32. reader.Read();
  33. // Loop through each element
  34. while (!reader.EOF && reader.ReadState == ReadState.Interactive)
  35. {
  36. if (reader.NodeType == XmlNodeType.Element)
  37. {
  38. switch (reader.Name)
  39. {
  40. case "CollectionItem":
  41. {
  42. using (var subReader = reader.ReadSubtree())
  43. {
  44. var child = GetLinkedChild(subReader);
  45. if (child != null)
  46. {
  47. list.Add(child);
  48. }
  49. }
  50. break;
  51. }
  52. default:
  53. {
  54. reader.Skip();
  55. break;
  56. }
  57. }
  58. }
  59. else
  60. {
  61. reader.Read();
  62. }
  63. }
  64. item.Item.LinkedChildren = list;
  65. }
  66. public BoxSetXmlParser(ILogger logger, IProviderManager providerManager, IXmlReaderSettingsFactory xmlReaderSettingsFactory, IFileSystem fileSystem) : base(logger, providerManager, xmlReaderSettingsFactory, fileSystem)
  67. {
  68. }
  69. }
  70. }