Pasar XML a PHP

Iniciado por Xes, 13 Octubre 2006, 00:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Xes

Hola, necesito ayuda para pasar xml a php, vereis, tengo una emisora de radio que carga el xml en el servidor, y la idea es sacar solo los datos de "author" y "title" para poner en el reproductor web un marco flotante que autorecargue cada 20 segundos, y asi mostrar el artista y la cancion que esta reproduciendo.

pero con lo que e sacado de otras webs me no sale como quiero, queda asi: La Raya Radio Tu emisora on line La Raya Radio Kortatu 03.- kortatu - aizkolari 146

tal cual, todo seguido, lo que quiero es que quede asi:

Artista: Kortatu
Cancion: 03.- kortatu - aizkolari

solo eso. el codigo que estoy poniendo es el siguiente:




playing.xml


<rss version="2.0">

<channel>

<itemrds1>La Raya Radio</itemrds1>

<itemrds2>Tu emisora on line</itemrds2>

<item>

<description>La Raya Radio</description>

<author>Kortatu</author>

<title>03.- kortatu - aizkolari</title>

<seg>248</seg>

<mess></mess>

<mess_sched></mess_sched>

<nameprog></nameprog>

<nameprog2></nameprog2>

<help></help>

</item>

</channel>

</rss>




playing.php


<?
$file = "playing.xml";
$map_array = array(
   "BOLD"    => "B",
   "EMPHASIS" => "I",
   "LITERAL"  => "TT"
);

function startElement($parser, $name, $attrs) {
   global $map_array;
   if ($htmltag = $map_array[$name]) {
       print "<$htmltag>";
   }
}

function endElement($parser, $name) {
   global $map_array;
   if ($htmltag = $map_array[$name]) {
       print "</$htmltag>";
   }
}

function characterData($parser, $data) {
   print $data;
}

$xml_parser = xml_parser_create();
// usa case-folding para que estemos seguros de encontrar la etiqueta
// en $map_array
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
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)));
   }
}
xml_parser_free($xml_parser);
?>





Como tendria que poner el php para que quedase como puse arriba??
Artista: xxxx
cancion: xxxx

deya

Utiliza SimpleXML. Te permite manejar el xml como variables php.

http://php.net/simplexml
Salu2  ;)
"No es mas pobre el que tiene poco, sino el que mucho ambiciona" Charles Chaplin.


alone-in-the-chat

tu problema esta alli
--------------
function characterData($parser, $data) {
   print $data;
}
--------------
estas mandando al browser todo lo que encuentras en el xml
deberias mandarlo solo en caso se trata de la etiquetas
<author>
<title>
podrias usar un flag que se active en la funcion startElement
en caso se trata de cualkiera de esas dos etiquetas y en endElement en caso se trata de cualkiera de las dos etiquetas los desabilitas .........
suerte ...
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b