Existe uma maneira de obter todos os atributos de um DOMElement?

votos
10

Estou lendo alguns XML com PHP e atualmente usando a DOMDocumentclasse a fazê-lo. Eu preciso de uma maneira de agarrar os nomes e valores de uma tag (exemplo de DOMElement) atributos, sem saber de antemão o que algum deles são. A documentação parece não oferecer qualquer coisa como isto. Eu sei que posso obter o valor de um atributo se eu tiver o seu nome, mas, novamente, eu não sei qualquer um destes e precisa encontrar ambos.

Sei também que outras classes, como SimpleXMLElementtêm esta capacidade, mas eu estou interessado em como isso pode ser feito com DOMDocument.

Publicado 27/08/2009 em 04:23
fonte usuário
Em outras línguas...                            


2 respostas

votos
24

Se você deseja obter nome de atributo e valores de atributos (não os attributeNodes) você tem que chamar a propriedade do objeto DOMNode $ attrNode-> nodeValue.

$attributes = array();

foreach($element->attributes as $attribute_name => $attribute_node)
{
  /** @var  DOMNode    $attribute_node */
  $attributes[$attribute_name] = $attribute_node->nodeValue;
}
Respondeu 08/02/2010 em 20:20
fonte usuário

votos
15

Você pode obter todos os atributos de um determinado DomNode, usando o DOMNode-> atributos de propriedade, ele irá retornar DOMNamedNodeMap contendo os nomes e valores de atributos.

foreach ($node->attributes as $attrName => $attrNode) {
    // ...
}
Respondeu 27/08/2009 em 04:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more