non so se con le dritte di WebHawk.it hai risolto... io per mio diletto ho modificato la classe, se hai problemi a capirla chiedi pure...
rssParserClass.php
codice:
<?php
class RSSParser {
var $insideitem = FALSE;
var $counter = 0;
var $content = Array();
var $tag = "";
var $name = "";
var $surname = "";
var $description = "";
var $link = "";
function startElement($parser, $tagName, $attrs) {
if ($this->insideitem) {
if($tagName == "FAMIGLIA") {
$this->famigliaflag = TRUE;
}
$this->tag = $tagName;
} elseif ($tagName == "ITEM") {
$this->insideitem=TRUE;
$this->counter++;
}
}
function endElement($parser, $tagName) {
if ($tagName == "ITEM") {
$this->content[$this->counter]["name"]=htmlspecialchars(trim($this->name));
$this->content[$this->counter]["surname"]=htmlspecialchars(trim($this->surname));
$this->content[$this->counter]["professione"]=htmlspecialchars(trim($this->professione));
$this->content[$this->counter]["eta"]=htmlspecialchars(trim($this->eta));
$this->name = "";
$this->famiglia = "";
$this->eta = "";
$this->professione = "";
$this->insideitem = FALSE;
}
if ($tagName == "FAMIGLIA") {
$this->famigliaflag=FALSE;
}
}
function characterData($parser, $data) {
if ($this->insideitem) {
switch ($this->tag) {
case "NAME":
if($this->famigliaflag) {
$this->surname .= $data;
} else {
$this->name .= $data;
}
break;
case "ETA":
$this->eta .= $data;
break;
case "PROFESSIONE":
$this->professione .= $data;
break;
case "FAMIGLIA":
$this->famiglia .= $data;
break;
}
}
}
}
index.php
codice:
<?php
include_once("rssParserClass.php");
$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();
xml_set_object($xml_parser,&$rss_parser);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen("xml.txt","r")
or die("Error reading RSS data.");
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($xml_parser);
echo "<pre>";
print_r($rss_parser->content);
echo "</pre>";
?>
nel file xml.txt ho messo l'esempio che hai fatto tu, e il risultato è il seguente:
codice:
Array
(
[1] => Array
(
[name] => mimmo
[surname] => albertini
[professione] => muratore
[eta] => 12
)
)
ciao