1

我在使用 PHP 的 while 循环中生成的 XML 结构中遇到了问题,最好说是一个错误。

这是我用来访问我的数据库并使用检索到的信息生成 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>

好,现在,多亏了我获得了一个大的 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 中与任何随机标签一起发生,只有一次并且没有传播。为什么?如何?

4

1 回答 1

1

出于调试目的...替换数据库中的所有数据,例如

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

带有控制文本,例如:

<?php echo "Control text"; ?>

看看问题是否消失 - 如果是这样,那么您可以确定问题与来自数据库的“数据”格式有关。您可能需要对从数据库中获取的文本应用字符串格式化函数。一些消毒子程序等。

如果问题没有消失 - 那么它显然是其余的问题。无论哪种方式,您的头痛都会减半。

于 2013-01-25T00:13:55.657 回答