BoxSetXmlParser.cs 3.1 KB

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