Question

I'm reading some XML with PHP and currently using the DOMDocument class to do so. I need a way to grab the names and values of a tag's (instance of DOMElement) attributes, without knowing beforehand what any of them are. The documentation doesn't seem to offer anything like this. I know that I can get an attribute's value if I have its name, but again, I don't know either of these and need to find both.

I also know that other classes like SimpleXMLElement have this capability, but I'm interested in how it can be done with DOMDocument.

Was it helpful?

Solution

You can get all the attributes of a given DomNode, using the DomNode->attributes property, it will return you DOMNamedNodeMap containing the attribute names and values.

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

OTHER TIPS

If you want to get attribute name and attribute values (not the attributeNodes) you have to call the $attrNode->nodeValue property of the DOMNode object.

$attributes = array();

foreach($element->attributes as $attribute_name => $attribute_node)
{
  /** @var  DOMNode    $attribute_node */
  $attributes[$attribute_name] = $attribute_node->nodeValue;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top