heey,
i'm currently facing the same problem as you.
i was thinking of using either xml_parse_into_struct or using
a class i found phpxml.class at http://www.phpxml.org
let me know how you did it, i'm very intrested
Serge "Zeddicus Zu'l Zorandre" Vleugels
-- freedom is the wizard's only choice --
On 23 Apr 2001 09:18:25 -0400, [EMAIL PROTECTED] wrote:
> Hello,
>
> I'm new to using XML with PHP, but I think I've got it figured out for
> the most part. I have created a class that reads in an XML file and
> returns the data it finds to an array, but I'm running into a problem
> because the array keeps coming back empty. Would you mind taking a
> moment to see where I'm going wrong?
>
>
> file.xml
> =======================================================================
>
> <ARTICLE>
> <URL>/article1.html</URL>
> <TITLE>Article 1</TITLE>
> </ARTICLE>
>
> <ATRICLE>
> <URL>/article2.html</URL>
> <TITLE>Article 2</TITLE>
> </ATRICLE>
>
>
>
> xml.class.php
> =======================================================================
>
>
> <?
>
>
> class eXML
> {
>
>
> var $Parser;
>
> var $theArray;
> var $theArrayTopElement;
> var $theArrayElements;
> var $theArrayPointer;
> var $theArrayGetElement;
>
>
> function eXML($_PARENT_, $_CHILDREN_)
> {
>
> $this->Parser = xml_parser_create("ISO-8859-1");
> xml_set_object($this->Parser, &$this);
> xml_set_element_handler($this-
> >Parser, "Tag_Open", "Tag_Close");
> xml_set_character_data_handler($this-
> >Parser, "CData");
>
> $this->theArray = array();
> $this->theArrayPointer = 0;
> $this->theArrayGetElement = NULL;
> $this->theArrayTopElement = $_PARENT_;
> $this->theArrayElements = $_CHILDREN_;
>
> }
>
>
> function Free()
> {
>
> xml_parser_free($this->Parser);
>
> }
>
>
> function Parse_Array($_FILE_)
> {
>
> $_FP_ = fopen($_FILE_, "r") or die("Cannot Open
> XML Stream");
>
> while ($_DATA_ = fread($_FP_, 4096))
> {
>
> if (!xml_parse($this->Parser, $_DATA_,
> feof($_FP_)))
> {
>
> return(FALSE);
>
> }
>
> }
>
> fclose($_FP_);
> var_dump($this->theArray);
> return($this->theArray);
>
> }
>
>
> function Tag_Open($_PARSER_, $_TAG_, $_ATTR_)
> {
>
> if ($_TAG_ == $this->theArrayTopElement)
> {
>
> $this->theArray[$this->theArrayPointer]
> = "SOMETEXT";
> // NOT SURE IF THIS IS NECESSARY
>
> }
>
> $_ELEMENTS_ = explode("::", $this-
> >theArrayElements);
> for ($I = 0; $I < count($_ELEMENTS_); $I++)
> {
>
> if ($_TAG_ == $_ELEMENTS_[$I])
> {
>
> $this->theArrayGetElement =
> $_ELEMENTS_[$I];
>
> }
>
> }
>
>
> }
>
>
> function Tag_Close($_PARSER_, $_TAG_)
> {
>
> if ($_TAG_ == $this->theArrayTopElement)
> {
>
> $this->theArrayPointer++;
>
> }
>
> $this->theArrayGetElement = NULL;
>
> }
>
>
> function CData($_PARSER_, $_CDATA_)
> {
>
> if ($this->theArrayGetElement != NULL)
> {
>
> array_push($this->theArray, $_CDATA_);
> $this->theArray[$this->theArrayPointer]
> [$this->theArrayGetElement] = $_CDATA_;
>
> }
>
> }
>
> }
>
>
> ?>
>
>
>
> xml.test.php
> =======================================================================
>
> <?
>
>
> $XML = new eXML("ARTICLE", "URL::TITLE");
> $ARTICLES = $XML->Parse_Array("file.xml");
> print_r($ARTICLES);
>
>
> ?>
>
>
> What I expect to happen is this:
>
> $ARTICLES[0]["URL"] == "/article1.html";
> $ARTICLES[0]["TITLE"] == "Article 1";
> $ARTICLES[1]["URL"] == "/article2.html";
> $ARTICLES[1]["TITLE"] == "Article 2";
>
> But the array is empty.
>
> Thankz in advance for your help.
> Robert
>
>
>
> --
>
> [ Swift eNetwork ] Matrix
> http://matrix.swifte.net/
>
> --
>
> --
> 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]
>
>
--
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]