diff options
Diffstat (limited to 'MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs')
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 8b73107bf..b5c4bef90 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -69,6 +69,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers Fetch(item, userDataList, metadataFile, settings, cancellationToken); } + protected virtual bool SupportsUrlAfterClosingXmlTag + { + get { return false; } + } + /// <summary> /// Fetches the specified item. /// </summary> @@ -79,6 +84,30 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// <param name="cancellationToken">The cancellation token.</param> private void Fetch(T item, List<UserItemData> userDataList, string metadataFile, XmlReaderSettings settings, CancellationToken cancellationToken) { + if (!SupportsUrlAfterClosingXmlTag) + { + using (var streamReader = BaseNfoSaver.GetStreamReader(metadataFile)) + { + // Use XmlReader for best performance + using (var reader = XmlReader.Create(streamReader, settings)) + { + reader.MoveToContent(); + + // Loop through each element + while (reader.Read()) + { + cancellationToken.ThrowIfCancellationRequested(); + + if (reader.NodeType == XmlNodeType.Element) + { + FetchDataFromXmlNode(reader, item, userDataList); + } + } + } + } + return; + } + using (var streamReader = BaseNfoSaver.GetStreamReader(metadataFile)) { // Need to handle a url after the xml data |
