我正在尝试删除 XML 结构中的特定节点。我希望能够删除包含我从表单字段中指定的特定用户名的 Employee 元素的所有子元素以及与之相关的所有子元素。我一直在使用 SimpleXML 加载所有数据,但我可以通过另一种方法重新加载数据。我想知道删除所有子元素的最佳方法是什么,无论元素的深度有多少。到目前为止,我遇到的所有解决方案都只有一个层次。我想删除用户名的用户UserToDelete
。结构的一个例子如下。
<Employees>
<Employee Status="Part-time">
<First_Name>...</First_Name>
<Last_Name>...</Last_Name>
<Position>...</Position>
<SSN>...</SSN>
<Contact_Info>
<Office_Phone>...</Office_Phone>
<Email>...</Email>
<Cell_Phone>...</Cell_Phone>
</Contact_Info>
<Access_Info level="admin">
<Username>UserToDelete</Username>
<Password>...</Password>
</Access_Info>
<Department>...</Department>
<Date_Started>...</Date_Started>
<Salary>...</Salary>
<Years>5</Years>
<Photo>...</Photo>
</Employee>
<Employee>
....
</Employee>
...
</Employees>
因此,问题的关键是如何使用 PHP 删除整个 Employee,包括所有子项,包括contact_info
and中的元素access_info
。节点的深度是否重要,或者我可以执行以下操作吗?
foreach ($xml->Employee as $employee) {
if($username == $employee->Access_Info->Username) {
foreach ($family as $node) {
$node->parentNode->removeChild($node);
}
echo $dom->saveXML('employees.xml');
echo "<font color='red'>".$username." deleted. </font>";
}
}
编辑:
我没有在echo "<font color='red'>".$username." deleted. </font>";
.