Title: AtomParser::parse
Published: April 25, 2014
Last modified: August 20, 2026

---

# AtomParser::parse()

## In this article

 * [Source](https://developer.wordpress.org/reference/classes/atomparser/parse/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/atomparser/parse/?output_format=md#related)

[ Back to top](https://developer.wordpress.org/reference/classes/atomparser/parse/?output_format=md#wp--skip-link--target)

## 󠀁[Source](https://developer.wordpress.org/reference/classes/atomparser/parse/?output_format=md#source)󠁿

    ```php
    function parse() {

        set_error_handler(array(&$this, 'error_handler'));

        array_unshift($this->ns_contexts, array());

        if ( ! function_exists( 'xml_parser_create_ns' ) ) {
        	trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) );
        	return false;
        }

        $parser = xml_parser_create_ns();
        xml_set_element_handler($parser, array($this, "start_element"), array($this, "end_element"));
        xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
        xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
        xml_set_character_data_handler($parser, array($this, "cdata"));
        xml_set_default_handler($parser, array($this, "_default"));
        xml_set_start_namespace_decl_handler($parser, array($this, "start_ns"));
        xml_set_end_namespace_decl_handler($parser, array($this, "end_ns"));

        $this->content = '';

        $ret = true;

        $fp = fopen($this->FILE, "r");
        while ($data = fread($fp, 4096)) {
            if($this->debug) $this->content .= $data;

            if(!xml_parse($parser, $data, feof($fp))) {
                /* translators: 1: Error message, 2: Line number. */
                trigger_error(sprintf(__('XML Error: %1$s at line %2$s')."\n",
                    xml_error_string(xml_get_error_code($parser)),
                    xml_get_current_line_number($parser)));
                $ret = false;
                break;
            }
        }
        fclose($fp);

        if (PHP_VERSION_ID < 80000) { // xml_parser_free() has no effect as of PHP 8.0.
            xml_parser_free($parser);
        }

        unset($parser);

        restore_error_handler();

        return $ret;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/atomlib.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/atomlib.php#L148)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/atomlib.php#L148-L196)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/atomparser/parse/?output_format=md#related)󠁿

| Uses | Description | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fatomparser%2Fparse%2F)
before being able to contribute a note or feedback.