2013-02-04 35 views
0

我使用此代码从PHP创建一个XML文件(未提交)。下面是代码:从PHP创建XML文件,但获得HTML一个

<?php 
include_once ('conf.php'); 
$conn = mysql_connect($host, $user, $password);  
if (!$conn) { 
    die('No hay conexion a la BBDD'); 
} 
$bd = mysql_select_db($name, $conn); 
if (!$bd) { 
    die ('Error en la BBDD'); 
} 
$query = "select * from usuarios where activo = 0 order by puntuacion desc limit 0, 10"; 
$res = mysql_query($query, $conn); 
$salida = '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>'."\n"; 
$salida .= '<score>'."\n"; 
$i = 1; 
while ($row = mysql_fetch_array($res)) 
{ 
    $salida.= '<posicion num="' . $i . '">'."\n"; 
    $salida .= '<id>'.$row['id'].'</id>'."\n"; 
    $salida .= '<puntuacion>'.$row['puntuacion'].'</puntuacion>'."\n"; 
    $salida .= '</posicion>'."\n"; 
    $i++; 
} 
$salida .= '</score>'; 
mysql_free_result($res); 
mysql_close($conn); 
echo $salida; 
?> 

当我把这个文件我得到(使用Chrome检查)与它的HTML,头和身体标记HTML文件内嵌的XML文件。我希望这个php文件能够通过ajax的get函数得到。

有关错在哪里的任何想法?

+3

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – j0k

+0

你在哪里告诉Chrome浏览器它是一个XML文件?您不在任何地方设置“Content-Type:application/xml”标头。但是,如果您只是手动检查源代码,则会看到原始输出。 –

回答

2

添加一个指定您正在输出XML的标头。 header('Content-Type: text/xml')就在你回声之前。

+0

固定!!!感谢大家。 –

2

阅读有关XML Manipulation的PHP手册。

您会在那里找到多汁的工具来获取,操作和创建XML文档。

此外,在进行任何输出之前,将一行header ("Content-type: text/xml");添加到您的脚本中,以便为客户端实体指定要发送XML并将其解析为XML。 header — Send a raw HTTP header

+0

就是这样。使用原始echo语句生成* valid * XML非常困难。 –

+1

@ÁlvaroG.Vicario:实际上,使用raw ech语句生成* valid * HTML同样很困难,这就是为什么您始终使用DOMDocument作为HTML的原因,对吧? ;) – hakre

+0

@hakre:哦,快点! :d – Dyin