Foros del Web » Programación para mayores de 30 ;) » Programación General »

Atributos XML y PHP

Estas en el tema de Atributos XML y PHP en el foro de Programación General en Foros del Web. Hola! Necesito obtener los atributos de un XML en PHP. El XML es algo así: <result_categories> <category id="3374" qty="13" link="http://www.1.com" /> <category id="2145" qty="7" link="http://www.2.com" ...
  #1 (permalink)  
Antiguo 21/09/2004, 00:03
 
Fecha de Ingreso: septiembre-2004
Mensajes: 3
Antigüedad: 19 años, 7 meses
Puntos: 0
Pregunta Atributos XML y PHP

Hola!
Necesito obtener los atributos de un XML en PHP. El XML es algo así:

<result_categories>
<category id="3374" qty="13" link="http://www.1.com" />
<category id="2145" qty="7" link="http://www.2.com" />
<category id="3365" qty="2" link="http://www.3.com" />
<category id="1188" qty="1" link="http://www.4.com" />
<category id="1369" qty="1" link="http://www.5.com" />
</result_categories>

Alguien me podría por favor ayudar a obtener el "id", "qty" y "link" de los resultados?
Muchisimas gracias!
  #2 (permalink)  
Antiguo 08/10/2004, 14:35
 
Fecha de Ingreso: enero-2002
Mensajes: 29
Antigüedad: 22 años, 3 meses
Puntos: 0
Proba con esto:


<?php

$xml = "ruta a tu archivo xml";


function mostrar_categoria($categoria) {
foreach ($categoria as $propiedad => $value) {
$variable = $propiedad;
$$variable = $value;
}
echo '<p><a href="' . $link . '"><strong>' . $id . '</strong></a>&nbsp;-&nbsp;' . $qty . '</em>';
}

$categorias = array();
$i = 0;

function opening_element($parser, $elemento, $atributos) {
global $categorias;
global $i;

if ($elemento == 'category') {
foreach ($atributos as $atributo => $valor) {
$categorias[$i][$atributo] = $valor;
}
$i++;
}
}

function closing_element($parser, $element) {
}

$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($parser, 'opening_element', 'closing_element');

if (!$document = @file($xml)) {
exit();
}

foreach ($document as $line) {
xml_parse($parser, $line);
}

while ( list($id_categoria, $categoria) = each($categorias) ) {
mostrar_categoria($categoria);
}

xml_parser_free($parser);

?>
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 14:50.