Решение, которое работало с моим рабочим объектным кодом PHP SimpleXMLElement с использованием Xpath, было:
/*
* Remove empty (no children) and blank (no text) XML element nodes, but not an empty root element (/child::*).
* This does not work recursively; meaning after empty child elements are removed, parents are not reexamined.
*/
foreach( $this->xml->xpath('/child::*//*[not(*) and not(text()[normalize-space()])]') as $emptyElement ) {
unset( $emptyElement[0] );
}
Обратите внимание, что не обязательно использовать PHP DOM, DOMDocument, DOMXPath или dom_import_simplexml ().