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

Jos*_*zel 10 php xml dom domdocument

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

我也知道其他类SimpleXMLElement有这样的能力,但我对它是如何完成的感兴趣DOMDocument.

Jan*_*lak 25

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

$attributes = array();

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


CMS*_*CMS 16

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

foreach ($node->attributes as $attrName => $attrNode) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)