2012-04-05 86 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]); 

我想......我写这些基于代码片段谷歌打开了,从来没有测试他们。随意给我反馈,如果它的工作与否。