aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.LocalMetadata
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-03 18:57:34 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-03 18:57:34 -0500
commit7ed6c67db0f28c5776d972668a438369c3b96aef (patch)
tree234d4878911b9fa9f18aed5a3166e301e572ec3d /MediaBrowser.LocalMetadata
parent83ad945015541aefbe2a0cd2a00ed6e0c151f72c (diff)
update xml parsing
Diffstat (limited to 'MediaBrowser.LocalMetadata')
-rw-r--r--MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs117
-rw-r--r--MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs34
2 files changed, 125 insertions, 26 deletions
diff --git a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
index 43a078316..d66cdf801 100644
--- a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
+++ b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
@@ -395,18 +395,32 @@ namespace MediaBrowser.LocalMetadata.Parsers
case "TagLines":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchFromTaglinesNode(subtree, item);
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromTaglinesNode(subtree, item);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
}
case "Countries":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchFromCountriesNode(subtree, item);
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromCountriesNode(subtree, item);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
}
@@ -592,14 +606,21 @@ namespace MediaBrowser.LocalMetadata.Parsers
case "Trailers":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- var hasTrailers = item as IHasTrailers;
- if (hasTrailers != null)
+ using (var subtree = reader.ReadSubtree())
{
- FetchDataFromTrailersNode(subtree, hasTrailers);
+ var hasTrailers = item as IHasTrailers;
+ if (hasTrailers != null)
+ {
+ FetchDataFromTrailersNode(subtree, hasTrailers);
+ }
}
}
+ else
+ {
+ reader.Read();
+ }
break;
}
@@ -699,59 +720,101 @@ namespace MediaBrowser.LocalMetadata.Parsers
case "Genres":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
+ {
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromGenresNode(subtree, item);
+ }
+ }
+ else
{
- FetchFromGenresNode(subtree, item);
+ reader.Read();
}
break;
}
case "Tags":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchFromTagsNode(subtree, item);
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromTagsNode(subtree, item);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
}
case "PlotKeywords":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchFromKeywordsNode(subtree, item);
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromKeywordsNode(subtree, item);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
}
case "Persons":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchDataFromPersonsNode(subtree, itemResult);
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchDataFromPersonsNode(subtree, itemResult);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
}
case "Studios":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchFromStudiosNode(subtree, item);
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromStudiosNode(subtree, item);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
}
case "Shares":
{
- using (var subtree = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- var hasShares = item as IHasShares;
- if (hasShares != null)
+ using (var subtree = reader.ReadSubtree())
{
- FetchFromSharesNode(subtree, hasShares);
+ var hasShares = item as IHasShares;
+ if (hasShares != null)
+ {
+ FetchFromSharesNode(subtree, hasShares);
+ }
}
}
+ else
+ {
+ reader.Read();
+ }
break;
}
@@ -824,6 +887,11 @@ namespace MediaBrowser.LocalMetadata.Parsers
{
case "Share":
{
+ if (reader.IsEmptyElement)
+ {
+ reader.Read();
+ continue;
+ }
using (var subtree = reader.ReadSubtree())
{
var share = GetShareFromNode(subtree);
@@ -1090,6 +1158,11 @@ namespace MediaBrowser.LocalMetadata.Parsers
case "Person":
case "Actor":
{
+ if (reader.IsEmptyElement)
+ {
+ reader.Read();
+ continue;
+ }
using (var subtree = reader.ReadSubtree())
{
foreach (var person in GetPersonsFromXmlNode(subtree))
diff --git a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs
index d4334bf62..695fe2b12 100644
--- a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs
+++ b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs
@@ -43,17 +43,31 @@ namespace MediaBrowser.LocalMetadata.Parsers
case "PlaylistItems":
- using (var subReader = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
{
- FetchFromCollectionItemsNode(subReader, item);
+ using (var subReader = reader.ReadSubtree())
+ {
+ FetchFromCollectionItemsNode(subReader, item);
+ }
+ }
+ else
+ {
+ reader.Read();
}
break;
case "Shares":
- using (var subReader = reader.ReadSubtree())
+ if (!reader.IsEmptyElement)
+ {
+ using (var subReader = reader.ReadSubtree())
+ {
+ FetchFromSharesNode(subReader, item);
+ }
+ }
+ else
{
- FetchFromSharesNode(subReader, item);
+ reader.Read();
}
break;
@@ -79,6 +93,12 @@ namespace MediaBrowser.LocalMetadata.Parsers
{
case "PlaylistItem":
{
+ if (reader.IsEmptyElement)
+ {
+ reader.Read();
+ continue;
+ }
+
using (var subReader = reader.ReadSubtree())
{
var child = GetLinkedChild(subReader);
@@ -123,6 +143,12 @@ namespace MediaBrowser.LocalMetadata.Parsers
{
case "Share":
{
+ if (reader.IsEmptyElement)
+ {
+ reader.Read();
+ continue;
+ }
+
using (var subReader = reader.ReadSubtree())
{
var child = GetShare(subReader);