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, 13 Nov 2009

view this page in

DOMElement::getAttribute

(PHP 5)

DOMElement::getAttribute属性の値を返す

説明

string DOMElement::getAttribute ( string $name )

現在のノードから、名前が name である属性の値を取得します。

パラメータ

name

属性の名前。

返り値

属性の値、あるいは name に対応する属性が 見つからなかった場合には空の文字列を返します。

参考



add a note add a note User Contributed Notes
DOMElement::getAttribute
info at kevinfilteau dot com
18-Jul-2009 02: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 08: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, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites