2012-04-28 27 views
7

Tôi đang sử dụng mã này trong CodeIgniter để tạo ra XML:XML tạo sử dụng 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); 
} 

Nhưng điều này cho thấy các định dạng in ấn nói chung. Làm thế nào tôi có thể làm cho nó hiển thị như một trang loại XML?

Trả lời

15

Bạn sẽ cần phải thiết lập tiêu đề XML nếu bạn muốn đầu ra các tập tin trực tiếp:

Sử dụng CodeIgniter Output class:

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

Hoặc bạn có thể sử dụng đồng bằng PHP để thiết lập các headers:

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

Hoặc bạn có thể sử dụng CI download helper:

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

Hoặc viết nó vào một tập tin với 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

Could yo u xin vui lòng ít phức tạp về $ file_name = '/path/to/myfile.xml'; đường dẫn tệp của tôi là $ file_name = base_url ('application/controllers/test.xml'); Tôi đoán vấn đề là vào $ file_name. – Shiplu

+0

@Shiplu sử dụng đường dẫn máy chủ đầy đủ đến tệp chứ không phải URL của trang web của bạn. –

2

Tôi cũng có cùng một câu hỏi. Tôi đã googled nó. Tìm thấy giải pháp này. Và nó hoạt động hoàn hảo cho tôi. Click here to get the source code

Chỉ cần tải về và giải nén (giải nén)

Sau đó copy xml_writer.php ở dành cho ứng dụng> thư viện của thư mục giải nén vào thư viện của bạn thư mục trong dự án CodeIgniter của bạn.

Cũng sao chép xml.php trong dành cho ứng dụng> điều khiển trong thư mục bộ điều khiển của bạn

Cuối cùng copy xml.php trong quan điểm của các thư mục trích trong quan điểm của bạn và chạy nó. .

Vậy đó ...

0

giải pháp tùy chỉnh:

$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); 
Các vấn đề liên quan