Есть ли способ получить все атрибуты DOMElement?

Я читаю XML-код с PHP и в настоящее время использую класс DOMDocument для этого. Мне нужен способ захватить имена и значения атрибутов тега (экземпляр DOMElement), не зная заранее, что это такое. документация, похоже, не предлагает ничего подобного. Я знаю, что могу получить значение атрибута, если у меня есть его имя, но опять же, я не знаю ни одного из них, и мне нужно найти оба.

Я также знаю, что другие классы, такие как SimpleXMLElement, обладают этой возможностью, но меня интересует, как это можно сделать с помощью DOMDocument.

Ответ 1

Вы можете получить все атрибуты данного DomNode, используя свойство DomNode- > attributes, оно вернет вам DOMNamedNodeMap, содержащий имена и значения атрибутов.

foreach ($node->attributes as $attrName => $attrNode) {
    // ...
}

Ответ 2

Если вы хотите получить имя атрибута и значения атрибута (а не атрибутыNodes), вам нужно вызвать свойство $attrNode- > nodeValue объекта DOMNode.

$attributes = array();

foreach($element->attributes as $attribute_name => $attribute_node)
{
  /** @var  DOMNode    $attribute_node */
  $attributes[$attribute_name] = $attribute_node->nodeValue;
}