PHP の while ループで生成された XML 構造に問題があります。バグと言うほうが適切です。
これは、DB にアクセスし、取得した情報を使用して XML を生成するために使用する PHP コードです (また、以前はコンテンツ タイプを text/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>
これで、DB に 255 行あるおかげで 2500 行を超える大きな XML を取得できましたが、最後のタグのように 1 つのタグだけで奇妙なエラーが発生することがあります。
<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 回だけ、伝播なしで発生する可能性があります。なんで?どのように?