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
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