我有以下xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<number_of_gr>
3
</number_of_gr>
<group id="0">
<name>Admins</name>
<backend>1</backend>
<every_plugin_feature> 1 </every_plugin_feature>
</group>
<group id="1">
<name>Users</name>
<backend>0</backend>
<every_plugin_feature>0</every_plugin_feature>
</group>
<group id="2">
<name>Moderators</name>
<backend>0</backend>
<every_plugin_feature>0</every_plugin_feature>
</group>
</root>
例如:我想删除id =“0”的组。但我不知道如何在simplexml中删除具有指定属性的子项。
我试过这段代码:
<?php
$xml = simplexml_load_file("../xml/groups.xml");
$delgroup = $xml->xpath("/root/group[@id='".$_GET['group']."'");
unset($delgroup);
$xml-> asXML("../xml/groups.xml");
?>
但它不起作用。
在这个过程之后,我将用id = 1填补空白,但我可以在没有帮助的情况下完成。
我的问题是:如何删除指定的组?
答案 0 :(得分:1)
你几乎就在那里,只是稍微调整一下:
$delgroup = $xml->xpath("//group[@id='".$_GET['group']."'")[0];
unset($delgroup[0]);
看到它有效:http://codepad.viper-7.com/ZVXs4O
这需要PHP&gt; = 5.4 要看一下背后的理论:Remove a child with a specific attribute, in SimpleXML for PHP - &gt;看哈克的答案。
PS:请记住更改<number_of_gr>
- 或从XML中删除此节点,因为您始终可以通过...获取此号码。
$groups = $xml->xpath("//group");
$numberofgroups = count($groups);