2013-05-05 46 views
4

我使用下面的代碼獲取當PHP頁面被稱爲XML文件:獲得編碼=「UTF-8」獨立=「是」使用PHP asXML和的SimpleXMLElement

即當你進入http://example.com/strtoxmp.php,它會回到你XML,基於以下編碼:

$xml = new SimpleXMLElement("<feed/>"); 

    $feed = $xml; 
    $feed->addChild('resultLength', "1"); 
    $feed->addChild('endIndex', "1"); 

    $item = $feed->addChild('item',""); 
    $item->addChild('contentId', "10031"); 
    $item->addChild('contentType', "Talk"); 
    $item->addChild('synopsis', "$newTitle"); 
    $item->addChild('runtime', ' '); 
} 

Header('Content-type: text/xml; charset:UTF-8; '); 

print($xml->asXML()); 

,它是工作的罰款。它產生以下XML:

<?xml version="1.0"?> 
<feed> 
<resultLength>1</resultLength> 
<endIndex>1</endIndex> 
<contentId>10031</contentId> 
<contentType>Talk</contentType> 
<synopsis>Mark Harris - Find Your Wings</synopsis> 
<runtime> </runtime> 
</item> 
</feed> 

但我需要

< XML版本= 「1.0」 編碼= 「UTF-8」 獨立= 「是」>

代替?的

<?XML版本= 「1.0」?>

+0

誰說你需要的是什麼?兩者應該是等同的。 – hakre 2013-05-05 16:27:44

+0

ROKU在<?xml version =「1.0」?>下無法正常工作,但它可以很好地與<?xml version =「1.0」encoding =「UTF-8」standalone =「yes」?> – SJSSoft 2013-05-05 17:32:17

+0

什麼是ROKU?流媒體播放器? – hakre 2013-05-05 17:33:36

回答

19

要設置XML聲明,只是將它添加到你傳遞給的SimpleXMLElement構造函數的字符串:

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ' 
    . 'standalone="yes"?><feed/>'); 

這應該輸出如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<feed/> 
+0

謝謝,我工作過。我對結果感到震驚。你能解釋一下嗎,它是怎麼發生的。從技術上講,我錯過了什麼。我試過'<?xml version =「1.0」encoding =「UTF-8」standalone =「yes」?>'但顯示錯誤。 – SJSSoft 2013-05-05 17:31:21

+0

當您將該字符串傳遞給構造函數時,您還添加了一個根元素嗎?如果沒有,你就不會有一個有效的XML文檔... – Ben 2013-05-05 22:18:03

+0

只是爲了防止有人在尋找那個:如果你還想添加樣式聲明:添加類似'<?xml-stylesheet type ='text/xsl'href ='my-xml-style.xsl'?>'就在你的''對象之前。 (或者你喜歡css風格) – Hafenkranich 2016-05-12 18:51:02