XML解析错误:在FF中格式不正确

时间:2014-09-10 08:16:48

标签: php xml .htaccess

我在XML文件下面:

<?xml version="1.0" encoding="UTF-8"?>
<?php
  header('Content-type: application/xml');
  require_once('includes/pdo_connection.php');
  $query = "Select * from photo_category WHERE status='A'";
  $result = DB::instance()->prepare($query)->execute()->fetchAll();
  $output="<juiceboxgallery galleryTitle='FutureFit Gallery'>";
  foreach($result as $row) {
    $cat_id = $row['id'];
    $cat_name = $row['photo_category_name'];
    $query2 = "Select * from photogallery WHERE pcID = '$cat_id' AND status = 'A' order by id desc";
    $result2 = DB::instance()->prepare($query2)->execute()->fetchAll();
    foreach($result2 as $row2) {
      $imgCaption = $row2['img_label'];
      $thumb = $row2['thumb_img'];
      $large = $row2['photo_gallery_image'];
      $output .= "<image imageURL='images/photogallery/large/$large'
          thumbURL='images/photogallery/thumb/$thumb'
          linkURL=''
          linkTarget='_blank'>
          <title>".$imgCaption."</title>
      </image>";
    }
  }
  $output .= "</juiceboxgallery>"; ?>
<?php echo $output; ?>

我在.htaccess使用如下:

<IfModule mod_php5.c>
  <FilesMatch "\.xml$">
    SetHandler application/x-httpd-php
  </FilesMatch>
</IfModule>

现在,当我在服务器上运行此XML时,出现XML格式不正确的错误。错误如下:

XML Parsing Error: not well-formed
$output= '<juiceboxgallery galleryTitle="FutureFit Gallery">';

在Chrome中,错误显示:

error on line 6 at column 50: Document is empty

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

首先检查响应文档的来源(在大多数浏览器中为ctrl + u或cmd + u)。确保PHP已执行且未传送到浏览器。

您在header('Content-type: application/xml');来电之前输出内容。 <?php ..?>之外的任何内容都是浏览器的输出。在你的情况下是xml声明。

如果数据库处理停止了脚本,则表示没有输出。这里没有我能看到的错误处理。

您可能会收到错误消息。使用浏览器的开发人员工具查看响应和/或检查响应源。

XML是作为文本生成的。添加数据库中的值而不进行转义。使用htmlspecialchars()转义<&等特殊字符。更好的是使用XMLWriter或DOM来生成XML并让它们处理转义。