downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

DOMElement::getAttributeNode> <DOMElement::__construct
Last updated: Fri, 14 Aug 2009

view this page in

DOMElement::getAttribute

(PHP 5)

DOMElement::getAttributeRetourne la valeur d'un attribut

Description

string DOMElement::getAttribute ( string $name )

Récupère la valeur d'un attribut avec le nom name pour le noeud courant.

Liste de paramètres

name

Le nom de l'attribut.

Valeurs de retour

La valeur de l'attribut ou une chaîne vide si aucun attribut avec le nom name donné n'est trouvé.

Voir aussi



add a note add a note User Contributed Notes
DOMElement::getAttribute
info at kevinfilteau dot com
18-Jul-2009 05:25
I want to retrieve value of name in my current language, or the default, or anything set if none of the above are true.

There is a sample XML file:

<product>
   <name lang="en">Candy</name>
   <name lang="fr">Bonbon</name>
   <name>Bonbon (no lang)</name>
</product>

There is my function, hope this can help. And if anybody want's to improve it, your welcom. The input elements are DOMNodeList returned from a previous DomXPath Query.

<?php
   
private function getValueByLang($elements) {

       
$a = array();

        if (!
is_null($elements)) {

            foreach (
$elements as $element) {
   
                if( !
is_null($element->attributes)) {
       
                   
$is_lang = false;               
       
                    foreach (
$element->attributes as $attrName => $attrNode) {
                   
                        if(
'lang' == $attrName ) {
                           
$a[$attrNode->value] = $element->nodeValue;
                           
$is_lang = true;
                        }
                    }
                   
                    if( !
$is_lang ) {
                       
$a[] = $element->nodeValue;           
                    }
                }
               
               
           
            }

           
// Returns current language if set.
           
if( array_key_exists($this->lang, $a)) {
               
$result = $a[$this->lang];
           
// Returns default language if set.
           
} elseif( array_key_exists($this->default_lang, $a)) {
               
$result = $a[$this->default_lang];
           
// Returns first result with no language attribute.
           
} elseif( isset($a[0])) {
               
$result = $a[0];
           
// Return anything set.
           
} elseif( $result = reset($a) ) {
           
// Return nothing,  Doh!
           
} else {
               
$result = false;
           
            }
           
           
            return(
$result);
   
        } else {
            throw new
Exception(printf("No elements defined."));
        }
    }
?>
mpalmer at cybersource dot com
09-Nov-2007 11:32
- - - - - - - - - - - - - -

XML Data:
<data>
<Report ID="1">
    <Date>REVIEW</Date>
    <AuthorID>1</AuthorID>
</Report>
<Report ID="2">
    <Date>REVIEW</Date>
    <AuthorID>2</AuthorID>
</Report>
</data>

- - - - - - - - - - - - - -

<?php
$xmlDoc
= new DOMDocument();
$xmlDoc->load( 'data.xml' );

$searchNode = $xmlDoc->getElementsByTagName( "Report" );

foreach(
$searchNode as $searchNode )
{
   
$valueID = $searchNode->getAttribute('ID');

   
$xmlDate = $searchNode->getElementsByTagName( "Date" );
   
$valueDate = $xmlDate->item(0)->nodeValue;

   
$xmlAuthorID = $searchNode->getElementsByTagName( "AuthorID" );
   
$valueAuthorID = $xmlAuthorID->item(0)->nodeValue;
   
    echo
"$valueID - $valueDate - $valueAuthorID\n";
}
?>

- - - - - - - - - - - - - -

Output:

1 - REVIEW - 1
2 - REVIEW - 2

- - - - - - - - - - - - - -

DOMElement::getAttributeNode> <DOMElement::__construct
Last updated: Fri, 14 Aug 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites