Foros del Web » Programando para Internet » PHP »

Leer archivo XML

Estas en el tema de Leer archivo XML en el foro de PHP en Foros del Web. Hola a todos. 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 ...
  #1 (permalink)  
Antiguo 18/01/2008, 10:07
 
Fecha de Ingreso: abril-2005
Mensajes: 287
Antigüedad: 18 años, 11 meses
Puntos: 0
Leer archivo XML

Hola a todos.

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_parserXML_OPTION_CASE_FOLDINGfalse);
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($fp4096)) {
          if (!
xml_parse($xml_parser$file_contentfeof($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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:12.