Hola tengo problemas con un script que estoy haciendo para leer un fichero xml. Resulta que la 1ª línea (sea la que sea) si que me la lee bien y le cambia las etiquetas, pero si el fichero tiene más de una, da el error:
Error XML : junk after document element en la línea 2
El fichero xml es:
<nombre>univ granada</nombre>
<url>http://www.ugr.es</url>
<cuando>hace muxo</cuando>
<porque>porque si</porque>
¿qué puede estar pasando? Estoy desesperado ya, lo he probado todo. Gracias y un saludo
Se me olvidaba incluir el código:
function startElement($parser, $name, $attrs) {
global $matriz_inicial;
if ($htmlexpr = $matriz_inicial[$name])
echo "<tr><td colspan=3>$htmlexpr";
}
function endElement($parser, $name) {
global $matriz_final;
if ($htmlexpr = $matriz_final[$name])
echo "$htmlexpr</td></tr>";
}
function characterData($parser, $data) {
echo $data;
}
//Aquí empieza la lectura del fichero XML.
$xml_parser = xml_parser_create();
// Opciones del objeto xml: no tener en cuenta las minúsculas.
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
// Manejadores de elemento inicial y final: qué es lo que tiene que hacer.
xml_set_element_handler($xml_parser, "startElement", "endElement");
// Manejador para los datos leídos.
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($fichero, "r"))) {die("¡Error! no se puede abrir el fichero: ".$fichero);}
// Leemos el fichero
while ($data = fgets($fp)) {
if (!xml_parse($xml_parser, $data, feof($fp)))
die(sprintf("Error XML : %s en la línea %d", xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
} // end del while
// Liberamos la memoria.
xml_parser_free($xml_parser);
He obviado algunos datos. Los valores de las etiquetas se cogen de un formulario y se meten en las matrices "matriz_inicial" y "matriz_final". Eso lo he comprobado y está bien y no lo pongo para no liar más. Ayuda porfaaaa