2010-12-23 92 views
11

我正在嘗試使用PHP文檔構建一個使用PHP 5的內置SimpleXMLElement類的XML文檔(用於AJAX)。我想從一個空白的石板開始,逐個構建XML元素,但是我沒有辦法構建一個SimpleXMLElement,而沒有從現有的一段XML代碼開始。我無法成功地將一個空白字符串(「」)傳遞給構造函數SimpleXMLElement,所以目前我將XML傳遞給最外層的標記,然後從那裏構建。這裏是我的代碼:如何在PHP中創建一個空/空的SimpleXMLElement?

// Start with a "blank" XML document. 
$xml = new SimpleXMLElement("<feature></feature>"); 

// Add various children and attributes to the main tag. 
$xml->addAttribute("id", $id); 
$xml->addChild("title", $feature['title']); 
$xml->addChild("summary", $feature['summary']); 
// ... 

// After the document has been constructed, echo out the XML. 
echo $xml->asXML(); 

有沒有更乾淨的方法來做到這一點?

+1

您可以使用DOMDocument創建元素並將其轉換爲SimpleXML,但這甚至更加複雜...... – derekerdmann 2010-12-23 07:30:17

+2

線索在類名中,您正在創建SimpleXML *元素*。至於更乾淨,`simplexml_import_dom()`是不必要的。除此之外,如果你想通過單個元素/屬性來構建文檔,那麼你擁有的是好的。 – salathe 2010-12-23 08:25:56

回答

5

由於salathe提到:

的線索是在類名,你要創建的SimpleXML 元素

現在我明白了SimpleXMLElement不能是「空的」。它必須是一個有效的XML元素,它必須具有標籤名稱以及打開和關閉標籤(例如<feature></feature><body></body>)。

這似乎意味着SimpleXMLElement是爲解析而不是構建XML文檔而創建的。話雖如此,我發現從零開始構建文檔非常簡單。該課程會自動執行許多很好的事情,包括保持一切緊湊並在頂部輸出XML版本號(<?xml version="1.0"?>)。

我會向任何需要使用PHP構建小型XML文檔的人推薦此方法。它勝過任何一天將標籤作爲字符串回顯出來。

謝謝大家,您的意見!