【问题标题】:XML error 'not well formed'XML 错误“格式不正确”
【发布时间】:2014-02-06 18:45:27
【问题描述】:

我有一个 php 文件,它返回一个 xml 文件,并且由于以下句子而出现“格式不正确”错误: $name_sql= "SELECT * FROM product_description WHERE product_id = ".$id."";

我初始化的php文件:

header('Content-type: text/xml');
header('Pragma: public');
header('Cache-control: private');
header('Expires: -1');

include('config.php');

echo'<?xml version="1.0" encoding="utf-8"?>';

我怎样才能改写那句话?谢谢

<?php
header('Content-type: text/xml');
header('Pragma: public');
header('Cache-control: private');
header('Expires: -1');

include('config.php');

error_reporting(E_ALL);


function getName($id) {

  $name_sql= "SELECT * FROM product_description WHERE product_id = ".$id."";

  $name_query = mysql_query($name_sql) or die('Eroare nume: '.mysql_error());
  $nume = mysql_fetch_array($name_query);
  return $nume;
}


echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<test>';

$var = mysql_query("SELECT * FROM product order by product_id ASC") or die(mysql_error());
while($var1 = mysql_fetch_array($var)) {
  $nume = getName($var1['product_id']);

  echo '<column><line>'.$nume['name'].'</line></column>';
}


echo '</test>';

&lt;?php

$_CONFIG['db_host'] = 'xyz'; $_CONFIG['db_user'] = 'xyz'; $_CONFIG['db_pass'] = 'xyz'; $_CONFIG['db_name'] = 'xyz';

$_CONFIG['site_URL'] = 'http://xyz.ro';

$lnk = mysql_connect($_CONFIG['db_host'], $_CONFIG['db_user'], $_CONFIG['db_pass']) or die (mysql_error()); mysql_select_db($_CONFIG['db_name'], $lnk) or die (mysql_error());

?&gt;

【问题讨论】:

  • XML 是什么样的?包含文件是否输出任何可能与 XML 数据混淆的文本。你是说$name_sql = "Select.... 在最终的 XML 文档中吗?
  • 对于很少的信息,查询和损坏的输出可能更进一步。向我们展示非格式良好的东西,但总的来说:更喜欢使用 xml 库来制作 xml,而不是自己构建。喜欢simplexmlDOM
  • config.php 文件设置与数据库的连接。该代码不是最终文件。在该代码中,如果删除 $id,则生成的 XML 没有错误,只是我需要该变量来从数据库中进行查询。我希望我解释得对。
  • 请发布生成的 xml 文件!
  • 错误 XML:格式不正确地址:xyz.ro/feed/test2.php 第 1 行,第 74664 列

标签: php mysql xml


【解决方案1】:

您的 XML 中的第一行必须是:&lt;?xml version="1.0" encoding="utf-8"?&gt;,但您的 include('config.php') 可能会在它之前输出一些内容。

试试这样的:

echo '<?xml version="1.0" encoding="utf-8"?>';
include('config.php');

function getName($id) {

  $name_sql= "SELECT * FROM product_description WHERE product_id = ".$id."";

  $name_query = mysql_query($name_sql) or die('Eroare nume: '.mysql_error());
  $nume = mysql_fetch_array($name_query);
  return $nume;
}
echo '<test>';

$var = mysql_query("SELECT * FROM product order by product_id ASC") or die(mysql_error());
while($var1 = mysql_fetch_array($var)) {
  $nume = getName($var1['product_id']);

  echo '<column><line>'.$nume['name'].'</line></column>';
}
echo '</test>';

【讨论】:

  • 你的意思是我的配置文件可能在它之前输出了一些东西?
  • 如果从代码中删除 $id... 我的 xml 已生成,但如果我删除 $id,则来自数据库的查询不起作用。所以这就是为什么我认为错误来自那条线..
  • 你的 config.php 文件的内容是什么?
  • 我放在主帖里
  • 好的,所以问题不在于 config.php。尝试将 error_reporting(E_ALL) 更改为 error_reporting(E_NONE)。 error_reporting(E_ALL) 可能会产生一些通知或警告,这些通知或警告将在 之前输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多