直接 echo XML 字符串,瀏覽器/解析器報錯:Error: Object # has no method 'load'。明明字符串格式正確,存為 .xml 文件卻能正常解析。
HTTP 響應缺少 Content-Type: text/xml(或 application/xml)頭部。瀏覽器默認按 text/html 解析,導致 XML 解析器無法識別,JS 庫(如 jQuery .load())拒絕處理。
<?php
// 必須在任何輸出前調用
header('Content-Type: text/xml; charset=UTF-8');
echo '<?xml version="1.0" encoding="UTF-8"?>
<sitemap>
<loc>https://www.jb51.net/</loc>
<lastmod>2013-01-22T11:00:18+08:00</lastmod>
</sitemap>';
exit;
?>
DOMDocument 或 XMLWriter 生成 XML,自動處理編碼與轉義。header('Content-Type: application/xml; charset=UTF-8') 更符合 RFC 7303。text/plain 查看原始輸出。| Header | 適用場景 | 備註 |
|---|---|---|
text/xml | 通用 XML,舊系統兼容 | RFC 3023,默認編碼 US-ASCII,**必須**指定 charset |
application/xml | 現代 API、REST 服務 | RFC 7303 推薦,編碼同樣需顯式聲明 |
application/rss+xml | RSS Feed | 專用 MIME 類型 |
application/atom+xml | Atom Feed | 專用 MIME 類型 |