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
index.phpcodice:<?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; } } } }
nel file xml.txt ho messo l'esempio che hai fatto tu, e il risultato è il seguente: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>"; ?>
ciaocodice:Array ( [1] => Array ( [name] => mimmo [surname] => albertini [professione] => muratore [eta] => 12 ) )![]()

Rispondi quotando