Existuje způsob, jak dostat všechny atributy dané DOMElement to?

hlasů
10

Čtu nějaký XML s PHP a aktuálně používá DOMDocumenttřídu, aby tak učinily. Musím způsob, jak chytit názvy a hodnotami tagu (instance DOMElement) atributů, aniž by předem věděl, co některý z nich. Dokumentace nezdá nabídnout něco takového. Vím, že mohu získat hodnotu atributu, když mám své jméno, ale zase nevím, jeden z nich a je třeba najít obojí.

Také vím, že jiné třídy, jako SimpleXMLElementmají tuto schopnost, ale zajímá mě, jak to lze udělat s DOMDocument.

Položena 27/08/2009 v 04:23
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
24

Chcete-li získat název atributu a hodnoty atributů (ne attributeNodes) budete muset zavolat vlastnost $ attrNode-> nodeValue objektu DOMNode.

$attributes = array();

foreach($element->attributes as $attribute_name => $attribute_node)
{
  /** @var  DOMNode    $attribute_node */
  $attributes[$attribute_name] = $attribute_node->nodeValue;
}
Odpovězeno 08/02/2010 v 20:20
zdroj uživatelem

hlasů
15

Můžete získat všechny atributy dané DomNode, pomocí DomNode-> atributy vlastnost, bude vám vrátí DOMNamedNodeMap obsahující názvy atributů a hodnot.

foreach ($node->attributes as $attrName => $attrNode) {
    // ...
}
Odpovězeno 27/08/2009 v 04:27
zdroj uživatelem

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