2010-11-12 93 views
0

我想從PHP創建/生成XML文檔,但不工作。我的PHP代碼生成XML文檔不能正常工作

我有這樣的代碼就在這裏:

<?php 
    $xml = new SimpleXMLElement("<evalues></evalues>"); 
    while ($row = mysqli_fetch_array($result)){  
     $evalue = $xml->addChild('evalue', $row[1]); 
     $evalue->addAttribute('id', $row[0]);    
    } 
    echo $xml->saveXML(); 
?> 

的結果看起來是這樣的,在一個長行

1513971901.549931756795512.970022842372553.270163414774046.390384216874570.370032821081734.920144539784.98 

的源代碼看起來是這樣的,這是正確的,但我想它在瀏覽器中看起來像是一個XML文檔,而無需查看源代碼。

<?xml version="1.0"?> 
<evalues> 
    <evalue id="5">1513971901.54993</evalue> 
    <evalue id="6">1756795512.97002</evalue> 
    <evalue id="7">2842372553.27016</evalue> 
    <evalue id="8">3414774046.39038</evalue> 
    <evalue id="9">4216874570.37003</evalue> 
    <evalue id="10">2821081734.92014</evalue> 
    <evalue id="11">4539784.98</evalue> 
</evalues> 

現在,當我右鍵單擊頁面,然後點擊頁面另存爲,它顯示的.htm在最後,但我想讓它顯示的.xml

回答

3

只要給你的客戶一個正確的內容類型:

header('Content-Type: text/xml'); 
+0

你能告訴我到底把它放在哪裏?在PHP裏面?我需要回聲嗎? – Pheap 2010-11-12 02:48:47

+0

@Pheap:把它放在你的php文件的頂部,在'<?php'之後。不,你不需要'echo',只需複製粘貼我的行。 – zerkms 2010-11-12 02:50:06

+0

我試圖把它放在任何地方,但我得到了一個警告,它仍然顯示相同的東西,只有一行。它說:「警告:不能修改標題信息 - 標題已經通過...在線發送(行號)」。行號是標題('Content-Type:text/xml')的地方。還有什麼建議? – Pheap 2010-11-12 04:48:34

1

你應該設置頁眉內容類型爲text/xml,以便瀏覽器能識別該文件是一個XML文檔。

header('Content-Type: text/xml'); 

之前任何輸出到文件你應該把這個代碼。這是打印語句的任何回聲之前。在這種情況下,你可以將代碼放在循環之前。

由於沒有樣式表附加到您的xml文檔Internet Explorer仍可能將其顯示爲純文本文件。你可以看到它使用的文檔Mozilla Firefox

+0

它實際上仍然在Mozilla Firefox中顯示爲一行。謝謝。 – Pheap 2010-11-20 02:58:57

0

如果你不想實際使用XML(只是顯示它),改變你的最後一行

echo '<pre>', htmlspecialchars($xml->saveXML()), '</pre>';