Two things:
1. Why doesn't this compile ? There is an error around $yahoo_items[][]
2. Why doesn't it print ? The code works just fine if i dont use class.
<?php
class xmlToArray
{
$yahoo_items[][] = array();
$yahoo_items_count = -1;
var $xml_resParser;
var $strXmlData;
var $current_tag;
function parse($strInputXML) {
$this->xml_resParser = xml_parser_create ();
xml_set_object($this->xml_resParser,$this);
xml_set_element_handler($this->xml_resParser, "tagOpen", "tagClosed");
xml_set_character_data_handler($this->xml_resParser, "tagData");
$this->strXmlData = xml_parse($this->xml_resParser,$strInputXML );
if(!$this->strXmlData) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xml_resParser)),
xml_get_current_line_number($this->xml_resParser)));
}
xml_parser_free($this->xml_resParser);
}
function tagOpen($parser, $name, $attrs) {
if ($this->current_tag == "ITEM") $this->yahoo_items_count += 1;
}
function tagData($parser, $tagData)
{
if ($this->current_tag == "DESCRIPTION")
{
$this->current_tag = "COMPANY";
$tagData = substr($tagData,9,strlen($tagData));
}
$this->yahoo_items[$this->yahoo_items_count][$this->current_tag] = $tagData ;
}
function tagClosed($parser, $name) {
//Do nothing.
}
function getDataArray(){
return $this->yahoo_items;
}
function getDataArrayCount(){
return $this->yahoo_items_count;
}
}
$data = file_get_contents("http://hotjobs.yahoo.com/rss/0/USA/AZ/-/-/-");
$objXML = new xmlToArray();
$objXML->parse($data);
$data = $objXML->getDataArray();
$data_count = $objXML->getDataArrayCount();
for ($i=0; $i <$data_count; $i++)
{
echo "i:$i<br>";
while (list($key,$val) = each ($data[$i]))
{
echo "Attribute: " . $key . " value: " . $val . "<br>";
}
echo "<br>";
}
?>