2013-01-24 11 views
1

我在PHP的while循环中生成的XML结构中遇到问题,最好说一个错误。在循环内生成的结构中的某些标记上的标记错误

这是我用来访问我的数据库,并生成一个XML与检索信息的PHP代码(也,我之前定义的内容类型为文本/ XML):

<?php include("basededatos.php"); $query = mysql_query("SELECT tipo,nombre,direccion,telefono,dias_habiles,sabados,domingos,coordenadas FROM iglesias"); while($row = mysql_fetch_array($query)) : ?> 
<iglesia cords="<?php echo $row["coordenadas"]; ?>" tipo="<?php echo utf8_encode($row["tipo"]); ?>"> 
    <nombre><?php echo utf8_encode($row["nombre"]); ?></nombre> 
    <direccion><?php if($row["direccion"]==""){echo "Dirección no especificada";} else {echo utf8_encode($row["direccion"]);} ?></direccion> 
    <telefono><?php if($row["telefono"]==""){echo "Teléfono no especificado";} else {echo utf8_encode($row["telefono"]);} ?></telefono> 
    <horarios> 
     <dias_habiles><?php if($row["dias_habiles"]==""){echo "Sin información";} else {echo utf8_encode($row["dias_habiles"]);} ?></dias_habiles> 
     <sabados><?php if($row["sabados"]==""){echo "Sin información";} else {echo utf8_encode($row["sabados"]);} ?></sabados> 
     <domingos><?php if($row["domingos"]==""){echo "Sin información";} else {echo utf8_encode($row["domingos"]);} ?></domingos> 
    </horarios> 
</iglesia> 

好现在,多亏了我获得一个大的XML,超过2500个感谢255行,我在我的数据库,但有时我有一个奇怪的错误只有一个标签,就像这最后一个行:

<iglesia cords="-34.59915445189461, -58.39169159531593" tipo="Parroquia"> 
<nombre>Parroquia Nuestra Señora del Carmen</nombre> 
<direccion>Rodriguez Peña 840</direccion> 
<telefono>011 4816 3511</telefono> 
<horarios> 
    <dias_habiles>8:00, 11:30, 19:30</dias_habiles> 
    <sabados>8:00, 17:30, 19:00</sabados> 
    <domingos>8:30, 11:00, 12:15, 17:30, 19:00, 20:15</domingos> 
</horarios> 
</iglesia> 
<iglesia cords="-34.595964052770476, -58.40230107307434" tipo="Parroquia"> 
<nombre>Parroquia Nuestra Señora del Carmelo</nombre> 
<direccion>Marcelo T. de Alvear 2465</direccion> 
<telefono>011 4821 5954</telefono> 
<horarios> 
    //Look here, the next line 
    dias_habiles>8:00, 11:00, 19:00, 20:00</dias_habiles> 
    <sabados>8:00, 11:00, 19:00, 20:00</sabados> 
    <domingos>8:00, 10:00, 11:00, 12:00, 19:00, 20:00, 21:00</domingos> 
</horarios> 
</iglesia> 

正如你所看到的<是错误的在dias_habiles标签中唱歌,但在此之前的一个dias_habiles是正确的,并且在那个错误之后,所有的dias_habiles都被很好地标记。

此外,并不总是这个标签的问题,这仅仅是一个例子,它可以在任何随机标签中发生,只有一次而没有传播,在XML中。为什么?怎么样?

回答

1

出于调试的目的... 从DB与替换所有数据,如

<?php echo utf8_encode($row["nombre"]); ?> 

控制文本,如:

<?php echo "Control text"; ?> 

看看问题是否会消失 - 如果是这样,那么你可以确定问题与来自数据库的'数据'的格式相关。您可能需要将字符串格式功能应用于您从数据库中抓取的文本。一些消毒subroutinte等

如果问题不走开 - 那么它显然是一个问题与其余。无论哪种方式你的头痛减半。