Есть ли способ получить все атрибуты DOMElement? - PullRequest
10 голосов
/ 27 августа 2009

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

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

Ответы [ 2 ]

25 голосов
/ 08 февраля 2010

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

$attributes = array();

foreach($element->attributes as $attribute_name => $attribute_node)
{
  /** @var  DOMNode    $attribute_node */
  $attributes[$attribute_name] = $attribute_node->nodeValue;
}
16 голосов
/ 27 августа 2009

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

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