有没有办法获得所有DOMElement的属性?

时间:2009-08-27 03:23:47

标签: php xml dom domdocument

我正在使用PHP阅读一些XML,目前使用DOMDocument类来执行此操作。我需要一种方法来获取标签(DOMElement)属性的名称和值,而不事先知道它们是什么。 documentation似乎没有提供这样的内容。我知道如果我有名字,我可以得到一个属性值,但同样,我不知道其中任何一个,需要找到它们。

我也知道像SimpleXMLElement这样的其他类具有此功能,但我对如何使用DOMDocument感兴趣。

2 个答案:

答案 0 :(得分:24)

如果要获取属性名称和属性值(而不是attributeNodes),则必须调用DOMNode对象的$ attrNode-> nodeValue属性。

$attributes = array();

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

答案 1 :(得分:16)

您可以使用DomNode->attributes属性获取给定DomNode的所有属性,它将返回包含属性名称和值的DOMNamedNodeMap

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