esportando i dati in xml da un gestionale di contabilità, nei campi di testo, quando si va a capo mi crea i caratteri & # x D ; e mi scende di una riga.
esempio:
<Product>
<Description>
riga1& # x D ; (li ho staccati perchè il forum me li cancellava)
riga2& # x D ;
riga3
</Description>
</Product>
durante il parsing purtroppo mi viene presa solo l'ultima riga, come posso fare per prendere tutto il contenuto del tag Description?
il codice che uso per il parsing è il seguente:
Codice PHP:
$filename="articoli.xml";
if( ! ($fp = fopen( "$filename" , "r" )) )die("Couldnt open xml file!");
$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 == "PRODUCT" )
{
$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 == "DESCRIPTION" )
{
$person_data[$person_counter]["Description"] = $data;
}
}
if( !($xml_parser = xml_parser_create()) )
die("Couldnt create XML parser!");
xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");
while( $data = fread($fp, 4096) )
{
if(!xml_parse($xml_parser, $data, feof($fp)) )
{
break;
}
}
xml_parser_free($xml_parser);
for( $i=0; $i < $person_counter; ++$i )
{
//query
}