2009-08-27 120 views
10

我正在用PHP閱讀一些XML,目前正在使用DOMDocument類來這樣做。我需要一種方法來獲取標籤(例如DOMElement)屬性的名稱和值,而不事先知道它們中的任何一個。 documentation似乎沒有提供這樣的東西。我知道,如果我有它的名字,我可以得到一個屬性的值,但是,我不知道這兩者中的哪一個,都需要找到它們。有沒有辦法獲得DOMElement的所有屬性?

我也知道像SimpleXMLElement這樣的其他類有此功能,但我對如何使用DOMDocument可以完成這項功能感興趣。

回答

15

您可以使用DomNode->attributes屬性獲取給定DomNode的所有屬性,它將返回包含屬性名稱和值的DOMNamedNodeMap

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

謝謝!請注意,您鏈接的文檔適用於PHP4。對於那些使用PHP5(像我一樣),這是最近的文檔:http://us.php.net/manual/en/class.domnode.php#domnode.props.attributes – 2009-08-27 03:35:31

+0

這是錯誤的。 foreach爲您提供DOMNodes,它具有nodeName和nodeValue屬性。 – 2016-07-28 12:13:26

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; 
} 
+0

這是一個比較完整的答案。 – 2013-03-11 20:48:02

相關問題