2011-12-29 4 views
2

Если я удалю элемент внутри элемента, и если его последний элемент, то родительский элемент будет сокращен до пустого элемента.Как обнаружить, если элемент XML пуст, используя DOMDocument в PHP?

Пример:

Начало: <element><child1>Inner HTML</child1><child2>Inner HTML</child2></element>

удаляю Child2 и я получаю: <element><child1>Inner HTML</child1></element>

удаляю child1 и я получаю: <element/>

Теперь я хочу, чтобы не произойдет или, по крайней мере, способ обнаружить, является ли элемент пустым, поэтому я могу его заменить. Как это сделать, используя DOMDocument в PHP.

Спасибо ...

+0

Что вы имеете в виду "хочу, чтобы не случилось?" Что бы вы хотели сделать вместо этого? Какой код вы используете для удаления других элементов? –

+0

Код должен быть обязательно предоставлен с этим объяснением. Если вы хотите обнаружить элемент пустым или нет, вы можете просто после удаления или перед проверкой http://www.php.net/manual/en/domnode.haschildnodes.php – Eugene

+0

на самом деле, я нашел ошибку ... это было связано к чему-то другому. извините за сообщение этого вопроса ... –

ответ

2

Вы должны быть в состоянии определить, является ли элемент пуст, проверяя длину list of child nodes:

$isEmpty = $elem->childNodes->length === 0; 

Обратите внимание, что не только элементы могут быть дочерними узлами другого элемента но и CDATA sections, comments и plain text.

+0

На самом деле, я нашел ошибку ... это было связано с чем-то еще. извините за сообщение этого вопроса ... но спасибо за ваш ответ ... –

2

Заимствуя the PHP manual:

count($elem->children()); 

Так, чтобы проверить, если пусто:

$isEmpty = count($elem->children()) === 0 ? true : false; 
Смежные вопросы