В SimpleXMLElement
нет встроенных свойств, которые позволили бы вам различать их.
Как и предполагали другие, dom_import_simplexml
может быть уместным, однако, эта функция может иногда менять узлы на лету, например, если вы передадите список дочерних узлов или именованных дочерних узлов, потребуется те и превратить их в первый элемент.
Если это пустой список, например, никакие атрибуты, возвращенные из attributes()
или несуществующие именованные дочерние узлы, выдаст предупреждение о том, что указан неверный тип узла:
Предупреждение: dom_import_simplexml (): неверный тип узла для импорта
Так что, если вам нужно это точное значение с быстрым логическим значением true
/ false
, вот как это работает с Simplexml:
$isElement = $element->xpath('.') == array($element);
$isAttribute = $element[0] == $element
and $element->xpath('.') != array($element);
Он работает аналогично спискам атрибутов и спискам элементов, я только что написал об этом утром , вам нужно иметь определенные знания о том, что оценивать для чего, поэтому я создал таблицу для это:
+------------------+---------------------------------------------+
| TYPE | TEST |
+------------------+---------------------------------------------+
| Element | $element->xpath('.') == array($element) |
+------------------+---------------------------------------------+
| Attribute | $element[0] == $element |
| | and $element->xpath('.') != array($element) |
+------------------+---------------------------------------------+
| Attributes | $element->attributes() === NULL |
+------------------+---------------------------------------------+
| Elements | $element[0] != $element |
| | and $element->attributes() !== NULL |
+------------------+---------------------------------------------+
| Single | $element[0] == $element |
+------------------+---------------------------------------------+
| Empty List | $element[0] == NULL |
+------------------+---------------------------------------------+
| Document Element | $element->xpath('/*') == array($element) |
+------------------+---------------------------------------------+