2012-04-28 26 views
7

estoy usando este código en CodeIgniter para generar XML:creación XML usando CodeIgniter

public function get_cuisine() 
{ 
    $this->load->dbutil(); 
    $sql = "select * from cuisine"; 
    $query = $this->db->query($sql); 
    $config = array (
     'root' => 'root', 
     'element' => 'element', 
     'newline' => "\n", 
     'tab'  => "\t" 
    ); 
    echo $this->dbutil->xml_from_result($query, $config); 
} 

Pero esto muestra el formato de impresión general. ¿Cómo puedo hacer que se muestre como una página de tipo XML?

Respuesta

15

Tendrá que establecer cabeceras XML si desea que el archivo directamente:

Utilizando el CodeIgniter Output class:

$xml = $this->dbutil->xml_from_result($query, $config); 
$this->output->set_content_type('text/xml'); 
$this->output->set_output($xml); 

O puede utilizar PHP plano para establecer el headers:

header('Content-type: text/xml'); 
echo $this->dbutil->xml_from_result($query, $config); 

O puede utilizar el CI download helper:

$xml = $this->dbutil->xml_from_result($query, $config); 
$this->load->helper('download'); 
force_download('myfile.xml', $xml); 

O escribirlo en un archivo con el file helper:

$xml = $this->dbutil->xml_from_result($query, $config); 
$this->load->helper('file'); 
$file_name = '/path/to/myfile.xml'; 
write_file($file_name, $xml); 
// Optionally redirect to the file you (hopefully) just created 
redirect($file_name); 
+0

Podría yo por favor, poco elaborado sobre $ file_name = '/path/to/myfile.xml'; mi ruta de archivo es $ file_name = base_url ('application/controllers/test.xml'); Supongo que el problema está en $ file_name. – Shiplu

+0

@Shiplu usa la ruta completa del servidor al archivo, no la URL de tu sitio web. –

2

yo también tenía la misma pregunta. Lo busqué en Google. Encontré esta solución. Y funciona perfectamente para mí. Click here to get the source code

sólo tiene que descargar y descomprimir (extraer)

continuación, copie el xml_writer.php en aplicación-> bibliotecas de la carpeta extraída a sus bibliotecas de carpeta en su proyecto CodeIgniter.

Copy también la xml.php en la aplicación-> controlador a la carpeta de controladores

Por último copiar el xml.php en los puntos de vista de la carpeta extraída en su punto de vista y lo dirige. .

Eso es todo ...

0

solución personalizada:

$mysql_data = $this->db->get('products') 
        ->result_array(); 
$xml = '<root>'; 
foreach($mysql_data as $row){ 
    $xml .= '<item> 
      <name>'.$row['title'].'</name> 
      <price>'.$row['price'].'</price> 
      <image>'.$row['pic'].'</image> 
      </item>'; 
} 
$xml .= '</root>'; 
$this->output->set_content_type('text/xml'); 
$this->output->set_output($xml);