我正在使用PHP阅读一些XML,目前使用DOMDocument
类来执行此操作。我需要一种方法来获取标签(DOMElement
)属性的名称和值,而不事先知道它们是什么。 documentation似乎没有提供这样的内容。我知道如果我有名字,我可以得到一个属性值,但同样,我不知道其中任何一个,需要找到它们。
我也知道像SimpleXMLElement
这样的其他类具有此功能,但我对如何使用DOMDocument
感兴趣。
答案 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) {
// ...
}