Parses an OPML file.
Feeds are recognized as <outline> elements with the attributes "text" and "xmlurl" set.
@todo Move this functionality to a parser.
$opml: The complete contents of an OPML document.
An array of feeds, each an associative array with a "title" and a "url" element, or NULL if the OPML document failed to be parsed. An empty array will be returned if the document is valid but contains no feeds, as some OPML documents do.
protected function parseOpml($opml) {
$feeds = array();
$xml_parser = drupal_xml_parser_create($opml);
if (xml_parse_into_struct($xml_parser, $opml, $values)) {
foreach ($values as $entry) {
if ($entry['tag'] == 'OUTLINE' && isset($entry['attributes'])) {
$item = $entry['attributes'];
if (!empty($item['XMLURL']) && !empty($item['TEXT'])) {
$feeds[] = array(
'title' => $item['TEXT'],
'url' => $item['XMLURL'],
);
}
}
}
}
xml_parser_free($xml_parser);
return $feeds;
}