diff options
Diffstat (limited to 'lib/FeedParser.php')
-rw-r--r-- | lib/FeedParser.php | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/FeedParser.php b/lib/FeedParser.php index 0ad90965..3b133b85 100644 --- a/lib/FeedParser.php +++ b/lib/FeedParser.php @@ -174,7 +174,7 @@ final class FeedParser } foreach ($namespaces as $namespaceName => $namespaceUrl) { - if (in_array($namespaceName, ['', 'content', 'media'])) { + if (in_array($namespaceName, ['', 'content'])) { continue; } $item[$namespaceName] = $this->parseModule($feedItem, $namespaceName, $namespaceUrl); @@ -250,11 +250,17 @@ final class FeedParser private function parseModule(\SimpleXMLElement $element, string $namespaceName, string $namespaceUrl): array { + // Unfortunately this parses out only node values as string + // TODO: parse attributes too + $result = []; $module = $element->children($namespaceUrl); foreach ($module as $name => $value) { - // todo: add custom parsing if it's something other than a string - $result[$name] = (string) $value; + if (get_class($value) === 'SimpleXMLElement' && $value->count() !== 0) { + $result[$name] = $this->parseModule($value, $namespaceName, $namespaceUrl); + } else { + $result[$name] = (string) $value; + } } return $result; } |