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
.
HTML DOM getAttribute() method is used to get the value of the attribute of the element. By specifying the name of the attribute, it can get the value of that element. To get the values from non-standard attributes, we can use the getAttribute() method.
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;
}
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) {
// ...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With