Хитрость DOMNodeLists состоит в том, что они НЕ являются массивами. Если вы удалите узел, список будет переиндексирован. Это приведет к поломке вашего кода, если пользователь выберет более одного элемента для удаления. Если вы выбрали плавание и бег, плавание и футбол будут удалены.
Возможно, вы захотите начать с предоставления каждому виду деятельности уникального идентификатора, который вы можете искать, скажем, атрибута с именем 'id' (это, вероятно, не будет настоящим идентификатором. GetElementByID () DOM работает только для XML, который имеет DTD, как HTML-страница. Я предполагаю, что вы не хотите туда заходить.)
Вы можете обновить ваш XML, чтобы он выглядел следующим образом.
<list>
<activity name="swimming">swimming</activity>
<activity name="running">running</activity>
<activity name="soccer">soccer</activity>
</list>
Вы бы использовали эти атрибуты имени вместо $ count в качестве значения внутри ваших флажков.
Затем вы можете использовать xPath для поиска элементов, которые нужно удалить внутри вашего foreach.
$xpath = new DOMXPath($xmldoc);
$xmldoc->firstChild->removeChild($xpath->query("/list/activity[@name='$id']")->item(0));
Надеюсь, это поможет вам начать.