BoxSetXmlParser.cs 2.9 KB

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