【发布时间】:2017-11-12 19:16:33
【问题描述】:
请帮忙!遇到此错误: 第 11 行第 3 列的错误:xmlParsePI:没有目标名称。
第 11 行是 atom:link 标记。我尝试将链接更改为实际文件名并得到相同的错误。我在本地运行代码,所以我也尝试使用 localhost url,但仍然是同样的错误。
我是 php 新手,这是我认为是过时材料的 php 课程的作业。任何建议都会有所帮助!
<?php
require_once('./Includes/connectvars.php');
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>';
$builddate = gmdate(DATE_RSS, time());
?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Vintage Cars and Trains</title>
<atom:link href="http://<?= $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'] ?>" rel="self" type="application/rss+xml" />
<link>products.php</link>
<description>Vintage cars and trains for lesson 9</description>
<lastBuildDate><?php $builddate ?></lastBuildDate>
<language>en-us</language>
<?
$query = " SELECT * FROM products WHERE productLine = 'Vintage Cars', 'Trains' ORDER BY dateAdded DESC LIMIT 10 ";
$result = mysqli_query($dbc, $query)
or die("Error querying database => $query");
//Loop through and print data
while ($newArray = mysqli_fetch_array($result)) {
$product_code = $newArray[productCode];
$product_name = $newArray[productName];
$product_line = $newArray[productLine];
$product_scale = $newArray[productScale];
$product_vendor = $newArray['productVendor'];
$product_description = $newArray['productDescription'];
$buy_price = $newArray['buyPrice'];
$pubdate = date(DATE_RSS, strtotime($date_added));
?>
<item>
<title><?php echo "$product_code - $product_name"; ?></title>
<description><?php $description ?></description>
<link><link>localhost/PHP/Lesson9/products.php?pid=<?php $product_code ?></link>
<guid isPermaLink="false">localhost/PHP/Lesson9/products.php?pid=<?php $product_code ?><guid>
<pubDate><?php $pubdate ?></pubDate>
</item>
}
</channel>
</rss>
【问题讨论】:
-
您正在将 XML 生成为文本而不转义特殊字符。我强烈建议使用 XML 库(DOM 或 XMLWriter)来创建 XML,或者至少对变量值使用适当的转义。