Foros del Web » Programando para Internet » PHP »

Error en documento XML - ayuda

Estas en el tema de Error en documento XML - ayuda en el foro de PHP en Foros del Web. Buenos días foreros, tengo un problema con la generación de un fichero XML, espero que algún miembro de la comunidad pueda ayudarme. El código que ...
  #1 (permalink)  
Antiguo 20/01/2011, 06:14
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 3 meses
Puntos: 4
Pregunta Error en documento XML - ayuda

Buenos días foreros,
tengo un problema con la generación de un fichero XML, espero que algún miembro de la comunidad pueda ayudarme.

El código que genera el XML de manera resumida es el siguiente:

require("config.php");
$dom = new DOMDocument("1.0"); //tb he probado especificando 'ISO-8859-1'
$node = $dom->createElement("markers");
$rootNode = $dom->appendChild($node);
header("Content-type: text/xml;");

//obvio la consulta, pero está bien formado y los reg. devueltos son correctos
$sql = "select ....";


$rowMarkers=mysql_query($sql,$dblink);
while ($markerObj = mysql_fetch_object($rowMarkers)){

$node = $dom->createElement("marker");
$newnode = $rootNode->appendChild($node);

$node = $dom->createElement("nombre",$markerObj->nombre); //error
$nodeCodComercio = $newnode->appendChild($node);

$node = $dom->createElement("codcomercio",$markerObj->codcomercio);
$nodeCodComercio = $newnode->appendChild($node);

$node = $dom->createElement("lat",$markerObj->latitud);
$nodeCodComercio = $newnode->appendChild($node);

$node = $dom->createElement("lng",$markerObj->longitud);
$nodeCodComercio = $newnode->appendChild($node);


/* ..más elementos.. */

}
echo $dom->saveXML(); //error
?>



El mensaje de error que recibo al visualizar el XML es: "contenido incorrecto tras un elemento XML del documento", y creo que se debe a los caracteres que aparecen en algunos registros para el campo nombre (ñ,á,é..)

Por lo que he podido averiguar, este error está relacionado con el encoding del documento. Para intentar solventar el anterior error, a la hora de crear el documento especifico el charset correspondiente al alfabeto español...

$dom = new DOMDocument("1.0","ISO-8859-1")

Pero el problema persiste.
Alguien puede arrojar un poco de luz sobre este asunto?
Muchas gracias de antemano por la ayuda..
  #2 (permalink)  
Antiguo 20/01/2011, 06:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Error en documento XML - ayuda

Una forma de resolver el problema es usando las entidades.
á = á
é = é....
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 20/01/2011, 06:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Error en documento XML - ayuda

Hola abimaelrc,
utilizar la función htmlentities() para transformar los caracteres especiales en las entidades me crea otro problema.

Es decir, si codifico:
$node = $dom->createElement("nombre",htmlentities($markerObj->nombre)); //error

Al visualizar el XML recibo el error:

Error de lectura XML: entidad no definida
"<markers><marker><nombre>Joyer&iacute;a pepa</nombre><.."

y aparece una flecha de color rojo apuntando a la primera aparición de carácter &

Así que sigo sin tener un XML bien formado
  #4 (permalink)  
Antiguo 20/01/2011, 06:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Error en documento XML - ayuda

Puedes indicar que es UTF-8 y así resuelves el problemas o usa doble el htmlentities
Código PHP:
Ver original
  1. htmlentities(htmlentities($markerObj->nombre))
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 20/01/2011, 07:04
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Error en documento XML - ayuda

Probaste con CData para envolver los strings con caracteres reservados ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 20/01/2011, 07:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Error en documento XML - ayuda

Ok, por fin obtengo un XML bien formado, gracias abimaelrc ya masterpuppet también aunque me he quedado con la primera solución.

Etiquetas: charset, encoding, xml
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 07:32.