Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con XML a través de PHP

Estas en el tema de Problemas con XML a través de PHP en el foro de Programación General en Foros del Web. Tengo una base de dados con información que muestro en un archivo PHP con formato XML. En la base de datos, codificada como utf_general_ci, las ...
  #1 (permalink)  
Antiguo 14/01/2009, 11:28
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 1
Problemas con XML a través de PHP

Tengo una base de dados con información que muestro en un archivo PHP con formato XML. En la base de datos, codificada como utf_general_ci, las palabras están escritas correctamente (acentos, añes, apóstrofes...), y el archivo PHP está codificado en ANSI.

Esto es el código del archivo PHP:
Código PHP:
<?php
header
("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
header("content-type:text/xml");
$name=$_GET['name'];
require (
"include/dbconnect.php");

$query="";
echo 
"<markers>
"
;
if (
$name != ""){
if (
$name=='tots'){
    
$query="SELECT name,lat,lng,county,type,elevation FROM tutor";
    }
if (
$name=='prehistoria'){
    
$query="SELECT name,lat,lng,county,type,elevation FROM tutor WHERE county='Jefferson' limit 10";
    }
if (
$name=='antiga'){
    
$query="SELECT name,lat,lng,county,type,elevation FROM tutor WHERE county='Clackamas' limit 20";
    }
if (
$name=='parc'){
    
$query="SELECT name,lat,lng,county,type,elevation FROM tutor WHERE class='park' limit 20";
    }
if (
$name=='vila'){
    
$query="SELECT nom,lat,lng,resum,id,icona FROM llocs_mapa";
    }
if (
$query != ""){
    
$results mysql_query($query);
    while (
$row=mysql_fetch_array($results)){
        echo 
'<marker html="'.htmlentities($row["nom"], ENT_QUOTES).'" 
        lat="'
.htmlentities($row["lat"], ENT_QUOTES).'" 
        lng="'
.htmlentities($row["lng"], ENT_QUOTES).'" 
        resum="'
.htmlentities(htmlentities($row["resum"], ENT_QUOTES)).'" 
        id="'
.htmlentities($row["id"], ENT_QUOTES).'" 
        icona="'
.htmlentities($row["icona"], ENT_QUOTES).'"/>
        '
; }
    }
}
    echo 
"</markers>";
?>
Y esto es el código XML que devuelve (está en catalán, pero da igual):
Código HTML:
<markers>
<marker html="Sant Miquel de Toudell" 
		lat="41.55267" 
		lng="1.97017" 
		resum="Esgl&amp;eacute;sia rom&amp;agrave;nica del segle XII" 
		id="1" 
		icona="vermell"/>
		<marker html="Santa Maria de Toudell" 
		lat="41.56292" 
		lng="1.98011" 
		resum="Esgl&amp;eacute;sia rom&amp;agrave;nica del segle XII" 
		id="2" 
		icona="blau"/>
		<marker html="Sant Jaume de Viladecavalls" 
		lat="41.55" 
		lng="1.92694" 
		resum="Esgl&amp;amp;amp;eacute;sia del segle XVI o XVI, possiblement una reconstrucci&amp;amp;oacute; d&amp;amp;amp;#39;una d&amp;amp;amp;#39;anterior" 
		id="3" 
		icona="blau"/>
		<marker html="Cam&iacute; de Santa Maria de Toudell" 
		lat="41.55952" 
		lng="1.98401" 
		resum="Lloc d&amp;#039;habitaci&amp;oacute; amb estructures (paviment rom&amp;agrave;)" 
		id="8" 
		icona="blau"/>
		<marker html="Sant Miquel de Toudell (II)" 
		lat="41.55354" 
		lng="1.97046" 
		resum="Necr&amp;ograve;polis romana en mal estat" 
		id="9" 
		icona="blau"/>
		<marker html="Can Tries" 
		lat="41.56445" 
		lng="1.98154" 
		resum="Lloc d&amp;#039;habitatge rom&amp;agrave; en mal estat" 
		id="10" 
		icona="blau"/>
		<marker html="Cova de les Pedres" 
		lat="41.57861" 
		lng="1.93889" 
		resum="Gran quantitat d&amp;#039;ind&amp;uacute;stria l&amp;iacute;tica de l&amp;#039;Eneol&amp;iacute;tic Precampaniforme" 
		id="11" 
		icona="blau"/>
		<marker html="Estaci&oacute; de Viladecavalls" 
		lat="41.56564" 
		lng="1.95867" 
		resum="Restes d&amp;#039;estructura amb pedra i morter amb canalitzaci&amp;oacute;" 
		id="12" 
		icona="blau"/>
		<marker html="Can Cabassa" 
		lat="41.53973" 
		lng="1.95699" 
		resum="Assentament rom&amp;agrave; destru&amp;iuml;t" 
		id="13" 
		icona="blau"/>

		<marker html="Sant Mart&amp;iacute; de Sorbet" 
		lat="41.55770" 
		lng="1.95499" 
		resum="Actual parr&amp;ograve;quia de Viladecavalls, constru&amp;iuml;da sobre una antiga esgl&amp;eacute;sia rom&amp;agrave;nica." 
		id="4" 
		icona="vermell"/>
		</markers> 
El problema que tengo es que me da error en la línea 20, columna 3, del archivo XML, o sea, la línia que pone:
Código HTML:
		<marker html="Cam&iacute; de Santa Maria de Toudell" 
El error parece estar en el símbolo "<" (sin las comillas). Lo más curioso es que si en el archivo PHP cambio
Código PHP:
        resum="'.htmlentities(htmlentities($row["resum"], ENT_QUOTES)).'" 
por esto
Código PHP:
        resum="'.htmlentities($row["resum"], ENT_QUOTES).'" 
entonces el error es el mismo pero en la línea 2, columna 1:
Código HTML:
<marker html="Sant Miquel de Toudell"
Otra vez en el mismo símbolo...

Alguna idea?

Nota: el error es XML, según el Firefox...
  #2 (permalink)  
Antiguo 14/01/2009, 19:20
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Problemas con XML a través de PHP

¿Es mi imaginación, o no tienes la especificación de que es un documento XML?
Código xml:
Ver original
  1. <?xml version="1.0" encoding="UTF-8" ?>
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 15/01/2009, 09:39
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problemas con XML a través de PHP

Lo probé con este código y tampoco funcionaba.

De todas formas, al final lo he solucionado con un tutorial.
  #4 (permalink)  
Antiguo 15/01/2009, 10:33
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Problemas con XML a través de PHP

Cita:
Iniciado por mrc2407 Ver Mensaje
De todas formas, al final lo he solucionado con un tutorial.
¿Podrías especificar y ampliar la razón del problema y su solución?. Gracias.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 15/01/2009, 10:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problemas con XML a través de PHP

Pues al final no sé dónde estaba el error, pero lo solucioné con este tutorial:

http://code.google.com/intl/ca/apis/maps/articles/phpsqlajax.html
  #6 (permalink)  
Antiguo 11/06/2009, 16:21
 
Fecha de Ingreso: junio-2009
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con XML a través de PHP

tu problema esta en varias lineas mas arriba.
&oacute;
con los acentos y eñes el & o ampersand no es un caracter permitido en el XML lo que tienes q hacer es colocar un xml así:
<?xml version="1.0" encoding="iso-8859-1"?><lista>
<ubicacion>
<id1>DOCUMENTO</id1>
<busqueda>NOMBRE </busqueda>
<titular>NE</titular>
<direccion>NE</direccion>
<tele>NE</tele>

<distrito>NE</distrito>
</ubicacion>
</lista>

Con <?xml version="1.0" encoding="iso-8859-1"?> no necesitas el acute ni nada de eso pones las tildes como siempre y los navegadores lo entienden esa informacion es de


Saludos

Última edición por jam1138; 11/06/2009 a las 16:53
  #7 (permalink)  
Antiguo 13/06/2009, 20:31
Avatar de PatomaS
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: En alguna otra parte
Mensajes: 4.656
Antigüedad: 20 años, 1 mes
Puntos: 63
Respuesta: Problemas con XML a través de PHP

Hola

En xml, y en cualquier otro lenguaje, están permitidos los caracteres que el juego de caracteres que usemos permita. Disculpen la redundancia.

UTF-8, el juego de caracteres por defecto en xml, permite ñ y cualquier otro caracteres de nuestro idioma; y de otros tantos.

LO que es importante recordar, cuando se tiene este tipo de problemas, es que hay varias cosas que deben coincidir para que las letras se vean bien:
1. El contenido del documento
2. El formato del archivo (juego de caracteres con que se graba)
3. Encabezados con los que se envía (Content-Type)

Si alguno de ellos falla, los resultados son bastante inestable, por no decir incorrectos.

El primer problema, y generalmente el más difícil de solucionar, es el formato del archivo, muchos editores no permiten elegir la codificación del documento, por lo que usan los caracteres que hemos puesto para seleccionarlo, pero en su lista, suele estar iso-8859-1 primero y ese es el formato por defecto. En el caso de Windows, muchas veces es el cp-1252, pero en definitiva, es lo mismo que el 8859-1

Felicidad
__________________
¡ hey, hou, hou, hey !
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 03:25.