diff options
author | 2025-03-02 19:32:33 -0800 | |
---|---|---|
committer | 2025-03-02 19:32:33 -0800 | |
commit | 8b16dd20f6544af3eedf286e23c0d34ab525736c (patch) | |
tree | ec284e22a046c4c8e9626e3fa64a000a2747bf84 /lib/FeedParser.php | |
parent | b183aa798af48af556496c42780d6e844172cf44 (diff) | |
parent | 00a24e2f694a319a5e6cb070dddfff2dae892378 (diff) | |
download | rss-bridge-master.tar.gz rss-bridge-master.tar.zst rss-bridge-master.zip |
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; } |