Foros del Web » Programando para Internet » PHP »

Modificación de archivos xml - Problemas con codificación UTF-8

Estas en el tema de Modificación de archivos xml - Problemas con codificación UTF-8 en el foro de PHP en Foros del Web. Estimados, estoy teniendo un inconveniente al querés modificar un archivo XML que contiene información con caracteres especiales, como acentos, etc. Partiendo de un xml con ...
  #1 (permalink)  
Antiguo 27/04/2008, 22:12
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Exclamación Modificación de archivos xml - Problemas con codificación UTF-8

Estimados, estoy teniendo un inconveniente al querés modificar un archivo XML que contiene información con caracteres especiales, como acentos, etc.

Partiendo de un xml con la siguiente estructura:

Código:
<menu>
<productos item="Cajas de cartón" link="http://www.google.com.ar/"/>
<productos item="Bolsas de polietileno" link="http://www.lanacion.com.ar/"/>
<productos item="Librería" link="http://www.ejdg.com.ar/"/>
<productos item="Panadería" link="http://www.ejdg.com.ar/blog"/>
<productos item="Fotocopiado" link="http://www.ejdg.com.ar/blog"/>
<productos item="Arías" link="asas"/>
</menu>
Utilizo el siguiente código PHP para añadir elementos de tipo <producto>... (puede ser que esté un poco sucio el código de tantas pruebas que hice y por no ser muy ducho con el php):

Código PHP:
<?
$menu 
= Array();
function 
start_element($parser$name$attrs){
    global 
$menu;
    if(
$name == "productos"){
        
array_push($menu$attrs);
    }
}
function 
end_element ($parser$name){}
$menu_string file_get_contents("xml/menu.xml");
$menu_string utf8_encode($menu_string);
$parser xml_parser_create("UTF-8");
xml_set_element_handler($parser"start_element""end_element");
xml_parser_set_option($parserXML_OPTION_CASE_FOLDING0);
xml_parse($parser$menu_string) or die("Error parsing XML document.");
$parser utf8_encode($parser);
print 
"<br />";
if(
$_POST['action'] == "ins"){
    
array_push($menu, Array(
                
"item" => $_POST['item'],
                
"link" => $_POST['link']));
    
$menu_final $menu;
}else if(
$_POST['action'] == "del"){
    
$menu_final = Array();
    foreach(
$menu as $productos){
        if(
$productos['item'] != $_POST['item']){
            
array_push($menu_final$productos);
        }
    }
}
$write_string "<?xml version=\"1.0\" encoding=\"utf-8\"?><menu>";
foreach(
$menu_final as $productos){
    
$write_string .= "<productos item=\"$productos[item]\" link=\"$productos[link]\" />";
}
$write_string .= "</menu>";
$fp fopen("xml/menu.xml""w+");
fwrite($fputf8_encode($write_string)) or die("Error writing to file");
fclose($fp);
print 
"<em>Song inserted or deleted successfully :)</em><br />";
print 
"<a href=\"ModifyMenu.php\" title=\"return\">Return</a>";
?>
Si bien estoy consiguiendo insertar la data que traigo del formulario, lo que me sucede es que el resto de la información que ya estaba en el XML pierde la codificación UTF-8, quedando asi:

Código:
<menu>
<productos item="Cajas de cartón" link="http://www.google.com.ar/"/>
<productos item="Bolsas de polietileno" link="http://www.lanacion.com.ar/"/>
<productos item="LibrerÃÂ*a" link="http://www.ejdg.com.ar/"/>
<productos item="PanaderÃÂ*a" link="http://www.ejdg.com.ar/blog"/>
<productos item="Fotocopiado" link="http://www.ejdg.com.ar/blog"/>
<productos item="ArÃÂ*as" link="asas"/>
<productos item="Polícia" link="Polícia"/>
</menu>
Desde ya agradezco cualquier ayuda que me puedan dar.
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 22:13.