Это довольно длинный вопрос, поэтому мне придется обратиться к другим вопросам. Сначала рассмотрим эту функцию:
function RemoveColonel($id, $secretaryId)
{
$colXpath = '//colonel[@id="' . $id . '"]';
$secXpath = $colXpath . '/Secretary[@id="' . $secretaryId . '"]';
RemoveNode($secXpath);
$colChildren = $rootXml->xpath($colXpath)->children();
$children = array();
foreach ($colChildren as $child ){
$children[] = $child;
}
RemoveNode($colXpath);
return $children;
}
Учитывая идентификатор полковника и секретаря этого полковника, он удаляет секретаря, а затем спасает детей полковника, чтобы удалить полковника и вернуть его. После этого вы можете снова вставить свои элементы в корневой узел, если хотите. Если у вас не может быть идентификатора секретаря в момент удаления полковника, вы можете обойти xpath, чтобы удалить секретаря как потомка полковника, удалив спецификацию id.
Код RemoveNode немного длинный, поэтому мне придется дать вам этот вопрос о том, как удалять узлы, используя SimpleXML в PHP.
Я надеюсь, что смогу помочь!