SimpleXMLElement cannot be found when working with namespaces

19,613

The fix was that I needed to add a forward slash () in front of SimpleXmlElement:

 $xml = new \SimpleXMLElement($this->create_gk_xml(), 0, true);

As outlined here.

Share:
19,613
Wipqozn
Author by

Wipqozn

I enjoy a variety things, including coding and gaming (video and otherwise).

Updated on June 18, 2022

Comments

  • Wipqozn
    Wipqozn almost 2 years

    I'm trying to create a Widget in Wordpress, and I'm running into an issue creating a SimpleXMLElement object.

    Here is the code:

    namespace GenieKnows_Search;  
    
    class GenieKnows_Search_Widget extends \WP_Widget {
         //Constructor
         function __construct() {
             parent::__construct('genieknows_search_widget', 'GenieKnows_Search_Widget');
         }
    
         //Irrelevant Code. Removed for readability. 
    
        //Return the XML
        function retrieve_gk_xml() {
              $xml = new SimpleXMLElement($this->create_gk_xml(), 0, true); //Line 114
              return $xml->xpath('/feed/results/sponsored/listing');
        }
    }
    

    Here is the error:

    PHP Fatal error: Class 'GenieKnows_Search\SimpleXMLElement' not found in /var/www/myticketpick.com/wp-content/plugins/genieknows-search/genieknows_search.php on line 114

    It would appear that it's trying to look for the SimpleXML class inside of my GenieKnows_Search namespace, however I'm at a loss as to why.

    Any ideas on why this error is occurring, and how I can fix it?

  • hienbt88
    hienbt88 almost 9 years
    This does not work for me. I'm using PHP 5.6, libxml, SimpleXML enabled.