Несмотря на то, что в SimpleXML нет подробного способа удаления элементов, вы можете удалить элементы из SimpleXML с помощью PHP unset()
. Ключом к этому является управление целевым элементом. По крайней мере, один из способов нацеливания - это порядок элементов. Сначала узнайте порядковый номер элемента, который вы хотите удалить (например, с помощью цикла), затем удалите элемент:
$target = false;
$i = 0;
foreach ($xml->seg as $s) {
if ($s['id']=='A12') { $target = $i; break; }
$i++;
}
if ($target !== false) {
unset($xml->seg[$target]);
}
Вы можете даже удалить несколько элементов, сохранив порядковый номер целевых элементов в массиве. Просто не забудьте выполнить удаление в обратном порядке (array_reverse($targets)
), поскольку удаление элемента естественным образом уменьшает порядковый номер элементов, следующих за ним.
По общему признанию, это что-то вроде взлома, но, похоже, работает нормально.