2009-08-27 25 views
10

PHP ile bazı XML okuyorum ve şu anda DOMDocument sınıfını kullanıyorum. Bir etiketin (örneğin DOMElement) özniteliklerinin adlarını ve değerlerini, bunlardan herhangi birini önceden bilmeden yakalama yoluna ihtiyacım var. documentation böyle bir şey sunmuyor gibi görünüyor. Adının bir özelliği varsa, bir öznitelik değeri alabileceğimi biliyorum, ama yine de, bunların ikisini de bilmiyorum ve ikisini de bulmalıyım.Tüm DOMElement özelliklerini almanın bir yolu var mı?

Ben de SimpleXMLElement gibi diğer sınıflar bu yeteneğe sahip olduğunu biliyoruz, ama DOMDocument ile yapılabilir nasıl ilgileniyorum.

cevap

15

Belirli bir DomNode'un tüm özniteliklerini DomNode->attributes özelliğini kullanarak alabilirsiniz, size DOMNamedNodeMap öznitelik adlarını ve değerlerini içeren döndürür.

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

Teşekkürler! Bağlandığınız belgelerin PHP4 için olduğuna dikkat edin. PHP5 kullananlar için (benim gibi), bu daha yeni belgeler: http://us.php.net/manual/en/class.domnode.php#domnode.props.attributes –

+0

Bu yanlış. Foreach, size nodeName ve nodeValue özelliğine sahip DOMNodes verir. –

24

Eğer öznitelik adı almak istiyorum ve DOMNode nesnesinin $ attrNode-> nodeValue özelliği aramak zorunda (değil attributeNodes) öznitelik değerleri edin.

$attributes = array(); 

foreach($element->attributes as $attribute_name => $attribute_node) 
{ 
    /** @var DOMNode $attribute_node */ 
    $attributes[$attribute_name] = $attribute_node->nodeValue; 
} 
+0

Bu daha eksiksiz bir cevaptır. –

İlgili konular