Mah .... se apri http://www.php.net/xml_parse puoi chiaramente leggere che il secondo parametro $data è una stringa che dovrebbe contenere "chunk of data to parse".
Mah .... se apri http://www.php.net/xml_parse puoi chiaramente leggere che il secondo parametro $data è una stringa che dovrebbe contenere "chunk of data to parse".
diciamo che ho capito una mezza cosa ma nn mi va bene mi spara sempre tutto il contenuto della variabile:
while( $data = fread($fp, 4096) )
{
if( !xml_parse($xml_parser, $data, feof($fp)) )
{
break; // get out of while loop if we're done with the file
}
ho sostituito con
while( $data = $xml )
{
if( !xml_parse($xml_parser, $data) )
{
break; // get out of while loop if we're done with the file
}
A che ti serve il while?
ok sono giunto a questa conclusione ma stavolta nn visualizza nulla
Codice PHP:<?php
include("spara.php");
$data=$xml;
$person_counter = 0;
$person_data = array();
$xml_current_tag_state = '';
function startElementHandler( $parser, $element_name, $element_attribs )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = $element_name;
}
function endElementHandler( $parser, $element_name )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = '';
if( $element_name == "ITEM" )
{
$person_counter++;
}
}
function characterDataHandler( $parser , $data )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
if( $xml_current_tag_state == '' )
return;
if( $xml_current_tag_state == "TITLE" ) {
$person_data[$person_counter]["title"] = $data;
}
if( $xml_current_tag_state == "DESCRIPTION" ) {
$person_data[$person_counter]["description"] = $data;
}
}
if( !($xml_parser = xml_parser_create()) )
die("Couldn't create XML parser!");
xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");
xml_parser_free($xml_parser);
for( $i=0 ; $i < $person_counter ; ++$i )
{
echo "marca: " . $person_data[$i]["description"] . "
\n";
echo "modello: " . $person_data[$i]["title"] . "
\n";
}
Se non richiami xml_parse() come pensi che possa venire effettuato il parsing dell'XML?
scusa non lo rikiamo cosi' xml_parser_free($xml_parser);
Cosa ti fa pensare che siano la stessa funzione, sopratutto visto che sono scritte in modo divero?
http://www.php.net/xml_parse
http://www.php.net/xml_parser_free
io non ho capito se sostituire non ho capito se devo sostituire prser free con xml_parse()
xml_parser_free($xml_parser);
$xml_parser = xml_parser_create();
cosi'? ma non me lo prende lo stesso....
Guarda, continui a postare del codice che sembra scritto a caso.
Studiati il funzionamento di questo:
Codice PHP:<?php
function char($parser, $data) {
echo $data;
}
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Do not forget me this weekend!</body>
</note>';
$parser = xml_parser_create();
xml_set_character_data_handler($parser, "char");
xml_parse($parser, $xml);
xml_parser_free($parser);
?>