function _aggregator_parse_opml

7.x _aggregator_parse_opml($opml)

Parses an OPML file.

Feeds are recognized as <outline> elements with the attributes "text" and "xmlurl" set.


$opml: The complete contents of an OPML document.

Return value

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.

1 call to _aggregator_parse_opml()
aggregator_form_opml_submit in drupal/modules/aggregator/
Form submission handler for aggregator_form_opml().


drupal/modules/aggregator/, line 383
Administration page callbacks for the Aggregator module.


function _aggregator_parse_opml($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'],

  return $feeds;