Если xml - это XElement, попробуйте:
xml.Element("head").Elements().Where(e=>e.Name == "beforeInit" || e.Name == "afterInit").Remove();
В противном случае, если это XDocument:
xml.Root.Element("head").Elements().Where(e=>e.Name == "beforeInit" || e.Name == "afterInit").Remove();
То, как оно есть сейчас, настроено для поиска подпрограммы.элементы в <rows>
, а не <head>
.Другими словами, Elements () возвращает только прямых потомков узла.Если вы хотите, чтобы все потомки, независимо от уровня, вам нужны потомки ().