我在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
请帮我解决这个问题。
答案 0 :(得分:0)
首先检查响应文档的来源(在大多数浏览器中为ctrl + u或cmd + u)。确保PHP已执行且未传送到浏览器。
您在header('Content-type: application/xml');
来电之前输出内容。 <?php ..?>
之外的任何内容都是浏览器的输出。在你的情况下是xml声明。
如果数据库处理停止了脚本,则表示没有输出。这里没有我能看到的错误处理。
您可能会收到错误消息。使用浏览器的开发人员工具查看响应和/或检查响应源。
XML是作为文本生成的。添加数据库中的值而不进行转义。使用htmlspecialchars()
转义<
或&
等特殊字符。更好的是使用XMLWriter或DOM来生成XML并让它们处理转义。