I decided to take my class and just turn it into some functions.  It 
works perfectly.  I did not change any code except for removing the 
class declaration and getting rid of the $this-> statements.  I believe 
that maybe my problem has to do with the use of xml_set_object() making 
a reference to $this:

xml_set_object($this->Parser, &$this);

If this is the case, I'm not sure why it would show the correct results 
in CData() but not at the end of GetArray(), but that's the only thing 
I can think the problem may be.

Below is a copy of my code just as seperate functions.  The code works 
perfectly.  I *really* wish I could find out why this won't work as a 
class though...



<?


        function GetArray($_FILE_)
        {

                global $Parser, $theArrayTopElement, $theArrayElements, 
$theArrayPointer, $theArrayGetElement, $theArray;

                $theArray = array();

                $_FP_ = fopen($_FILE_, "r") or die("Cannot Open XML 
Stream");

                while ($_DATA_ = fread($_FP_, 4096))
                {

                        if (!xml_parse($Parser, $_DATA_, feof($_FP_)))
                        {

                                return(FALSE);

                        }

                }

                fclose($_FP_);

                return($theArray);

        }


        function Tag_Open($_PARSER_, $_TAG_, $_ATTR_)
        {

                global $Parser, $theArrayTopElement, $theArrayElements, 
$theArrayPointer, $theArrayGetElement, $theArray;

                $_ELEMENTS_ = explode("::", $theArrayElements);
                for ($I = 0; $I < count($_ELEMENTS_); $I++)
                {

                        if ($_TAG_ == $_ELEMENTS_[$I])
                        {

                                $theArrayGetElement = $_ELEMENTS_[$I];

                        }

                }

        }


        function Tag_Close($_PARSER_, $_TAG_)
        {

                global $Parser, $theArrayTopElement, $theArrayElements, 
$theArrayPointer, $theArrayGetElement, $theArray;

                if ($_TAG_ == $theArrayTopElement)
                {

                        $theArrayPointer++;

                }

                $theArrayGetElement = NULL;

        }


        function CData($_PARSER_, $_CDATA_)
        {

                global $Parser, $theArrayTopElement, $theArrayElements, 
$theArrayPointer, $theArrayGetElement, $theArray;

                if ($theArrayGetElement != NULL)
                {

                        $theArray[$theArrayPointer]
[$theArrayGetElement] = $_CDATA_;

                }

        }


        $theArrayTopElement = "ARTICLE";
        $theArrayElements = "URL::TITLE";
        $theArrayPointer = 0;
        $theArrayGetElement = NULL;

        $Parser = xml_parser_create("ISO-8859-1");
        xml_set_element_handler($Parser, "Tag_Open", "Tag_Close");
        xml_set_character_data_handler($Parser, "CData");

        $NEWS = GetArray("myfile.xml");
        print_r($NEWS);



?>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to