Удалить все элементы определенного типа из XML-документа с помощью PHP

У меня есть то, что должно быть легкой задачей: удалите узлы <places> и их потомки из документа XML, оставив другие узлы.

Я пробовал этот код, но он не работал …

 $document->preserveWhiteSpace = false; $books = $xpath->query('piletilve_info/places'); //echo "4"; foreach ($books as $places) { while($places->hasChildNodes()) { $places->removeChild($places->childNodes->item(0)); } $places->parentNode->removeChild($places); } : $document->preserveWhiteSpace = false; $books = $xpath->query('piletilve_info/places'); //echo "4"; foreach ($books as $places) { while($places->hasChildNodes()) { $places->removeChild($places->childNodes->item(0)); } $places->parentNode->removeChild($places); } : $document->preserveWhiteSpace = false; $books = $xpath->query('piletilve_info/places'); //echo "4"; foreach ($books as $places) { while($places->hasChildNodes()) { $places->removeChild($places->childNodes->item(0)); } $places->parentNode->removeChild($places); } : $document->preserveWhiteSpace = false; $books = $xpath->query('piletilve_info/places'); //echo "4"; foreach ($books as $places) { while($places->hasChildNodes()) { $places->removeChild($places->childNodes->item(0)); } $places->parentNode->removeChild($places); } 

Исходный XML для обработки:

 <piletilve_info> <places> <place> ... </place> </places> <other node> ... </other node> </piletilve_info> 

В реальных данных больше узлов, которые не являются местами, но для простоты в этом примере показано лишь несколько.

Я видел примеры C #, но мне не удается переносить код на PHP.

Уточнение : в фрагменте кода переменная $books является только держателем для запрошенного списка. Имя не имеет значения.

Цель состоит в том, чтобы удалить весь узел, оставив другие узлы (в действительности их больше, но для простоты этот пример показывает все

 $dom = new DOMDocument; $dom->load('places.xml'); foreach ($dom->getElementsByTagName('places') as $places) { $places->parentNode->removeChild($places); } echo $dom->saveXml(); : $dom = new DOMDocument; $dom->load('places.xml'); foreach ($dom->getElementsByTagName('places') as $places) { $places->parentNode->removeChild($places); } echo $dom->saveXml(); 

удалит все элементы <places> любом месте документа, включая любых детей.

Вывод:

 <?xml version="1.0"?> <piletilve_info> <other> ... </other> </piletilve_info>