使用php从xml中删除元素

使用php从xml中删除元素,php,xml,post,Php,Xml,Post,我正在构建一个iphone应用程序,它允许人们通过向php脚本发送帖子来更新xml文件。在他们将帖子发送到php脚本并更新xml之后,我希望用户能够取消对xml的更新。如何从XML中删除一个元素并将XML文件重写到服务器上的同一位置(换句话说,现在只有一个元素消失了,其他所有内容都相同)?为了添加元素,我使用了如下代码: $xmlUrl = "Bars.xml"; // XML $xmlStr = file_get_contents($xmlUrl); $xml = new SimpleXML

我正在构建一个iphone应用程序,它允许人们通过向php脚本发送帖子来更新xml文件。在他们将帖子发送到php脚本并更新xml之后,我希望用户能够取消对xml的更新。如何从XML中删除一个元素并将XML文件重写到服务器上的同一位置(换句话说,现在只有一个元素消失了,其他所有内容都相同)?为了添加元素,我使用了如下代码:

$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脚本时,我有元素的属性来标识要删除的元素。 谢谢您的帮助。

的可能副本

从您的代码片段中,我真的不知道给出了什么数据。你可以试着做任何一件事

unset($bartenders[$newBar_ID]);


我想。。。我是根据谷歌提供的代码片段写的,从来没有测试过。如果有效或无效,请随时向我提供反馈。

这种方法对于多个同时请求是不安全的。如果两个应用程序同时命中php脚本,您的xml文件可能会在写入时被读取(因此被读取为无效xml)。考虑使用一个真正的XML数据库,将XML存储在关系数据库中,或者至少使用文件锁定或原子文件写入。@ FrancisAvila感谢输入。该应用程序将在一个小的图形区域中使用,只有少数人能够更新。然而,了解更多信息将是一件有趣的事情。。你知道有什么好办法让我跟上进度吗?
$bartenders->removeChild($bartenders[$newBar_ID]);