Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/01/2009, 11:28
mrc2407
 
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 16 años, 5 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...