2012-04-05 70 views
0

我正在構建一個iPhone應用程序,它允許人們通過發送POST到PHP腳本更新XML文件。在他們發送帖子到php腳本並更新了xml之後,我希望用戶能夠取消對XML的更新。如何從XML中只刪除一個元素,並將XML文件重寫到服務器上的相同位置(換句話說,只有一個元素現在消失了,其他所有內容都是相同的)?要添加我使用的代碼看起來像下面的元素:從XML中刪除元素與PHP

$xmlUrl = "Bars.xml"; // XML 
$xmlStr = file_get_contents($xmlUrl); 
$xml = new SimpleXMLElement($xmlStr); 
$bartenders = $xml->xpath('//Bartenders'); 
$new_bartender = $bartenders[$newBar_ID]->addChild('Bartender'); 
$new_bartender->fname = $newfname; 
$new_bartender->lname = $newlname; 
$new_bartender->imageURL = $newimageURL; 
$new_bartender->shift = $newShift; 
print_r($bartenders); 

$xml->asXML('Bars.xml'); 

當我發送POST方法PHP腳本,我有元素的屬性,以確定將被刪除。 感謝您的幫助。

+0

這種方法對於多個同時請求是不安全的。如果兩個應用程序同時觸發php腳本,則可能會在寫入xml文件時讀取它(因此被視爲無效的xml)。考慮使用真正的xml數據庫,將xml存儲在關係數據庫中,或者至少使用文件鎖定或原子文件寫入。 – 2012-04-05 03:48:51

+0

@FrancisAvila感謝您的意見。該應用程序將用於小型圖形區域,只有少數人可以更新。然而,瞭解更多信息會很有趣。你知道有什麼好的資源可以讓我加快速度嗎? – thebiglebowski11 2012-04-05 13:48:51

回答

1

可能重複的THIS

從你的代碼片段我不知道什麼數據給出。你可以做其中之一

unset($bartenders[$newBar_ID]); 

$bartenders->removeChild($bartenders[$newBar_ID]); 

我想......我寫這些基於代碼片段谷歌打開了,從來沒有測試他們。隨意給我反饋,如果它的工作與否。