J'utilise un parser en php mais je ne comprends pas à quels moments sont appellés les fonctions StartElement et EndElement.
Si vous comprenez?
Donnees.xml:
<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<TERRITOIRE>
<ROW>
<COMMUNE>35331</COMMUNE>
<REVMENAGE>114150</REVMENAGE>
</ROW>
<ROW>
<COMMUNE>35332</COMMUNE>
<REVMENAGE>75739</REVMENAGE>
</ROW>
</TERRITOIRE>
Script php:
<?
global $debut,$nbredonnee,$tableau,$ligne,$i;
$file="Donnees.xml";
$i=-1;
function startElement($parser, $name, $attribs) {
global $debut,$nbredonnee,$i;
if($name=="ROW" ){
$i++;
$debut=1;
$nbredonnee=1;
}
}
function endElement($parser, $name) {
if($name=="ROW" ){
echo "<br>";
}
}
function characterData($parser, $data) {
global $tableau,$debut,$nbredonnee,$ligne,$i;
if($debut==1){
$debut=0;
echo "ligne n°".$i;
$tableau[$i][0]=$data;
echo " commune: ".$tableau[$i][0];
}else{
$tableau[$i][$nbredonnee]=$data;
echo $tableau[$i][$nbredonnee];
$nbredonnee++;
}
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement" );
xml_set_character_data_handler($xml_parser, "characterData" );
if (!($fp = fopen($file, "r" ))) {
die("could not open XML input" );
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}
}
echo "tab:".$tableau[0][0]."<br>";
echo "tab:".$tableau[0][1]."<br>";
echo "tab:".$tableau[1][0]."<br>";
echo "tab:".$tableau[1][1]."<br>";
echo "count:".count($tableau);
xml_parser_free($xml_parser);
?>
A la fin du script, quand j'affiche le contenu de $tableau,il n'y a rien dans ce tableau (pas aux endroits 0,1 mais plus loin dans le tableau),donc $nbredonnee est incrémenté sans que je m'en rende compte. D'où mon topic
SVP un ch'ti coup pouce, please!
