Quiero leer un archivo XML y guardarlo en un array.Para ello he hecho el soguiente script,pero al imprimir el array,cada elemento lo imprime dos veces.Espero que alguien me pueda decir por qué hace eso.
Código PHP:
$file="config.xml";
//$array_elements=array();
$cont=0;
$array_de_arrays=array();
function startElement($parser, $name, $attribs)
{
global $array_elements;
global $cont;
$cont++;
$array_elements=array();
$array_elements['name']=$name;
foreach($attribs as $indice=>$valor)
{
$array_elements[$indice]=$valor;
}
}
function endElement($parser, $name)
{
}
function characterData($parser, $data)
{
global $array_elements;
global $array_de_arrays;
global $cont;
$array_elements['data']=$data;
$array_de_arrays[$cont]=$array_elements;
$cont++;
}
$xml_parser=xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("No se pudo abrir el fichero XML");
}
echo "<pre>";
while ($file_content = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $file_content, 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 "</pre>";
echo "<pre>";
print_r($array_de_arrays);
echo "</pre>";
xml_parser_free($xml_parser);
?>
Para probarlo debeis sustituir $file="config.xml" por el nombre de vuestro archivo xml.Gracias