php - Get Last XML Child from Tree of All Same Name Children -


i'm struggling parse xml structure:

<browsenodes>     <browsenode>         <browsenodeid>6388960011</browsenodeid>         <name>road bike frames</name>         <ancestors>             <browsenode>                 <browsenodeid>1266090011</browsenodeid>                 <name>bike frames</name>                 <ancestors>                     <browsenode>                         <browsenodeid>3403201</browsenodeid>                         <name>cycling</name>                         <ancestors>                             <browsenode>                                 <browsenodeid>706814011</browsenodeid>                                 <name>outdoor recreation</name>                                 <ancestors>                                     <browsenode>                                         <browsenodeid>3375301</browsenodeid>                                         <name>categories</name>                                         <iscategoryroot>1</iscategoryroot>                                         <ancestors>                                             <browsenode>                                                 <browsenodeid>3375251</browsenodeid>                                                 <name>sports & outdoors</name>                                             </browsenode>                                         </ancestors>                                     </browsenode>                                 </ancestors>                             </browsenode>                         </ancestors>                     </browsenode>                 </ancestors>             </browsenode>         </ancestors>     </browsenode>     <browsenode>         <browsenodeid>11130424011</browsenodeid>         <name>outdoor recreation features</name>         <ancestors>             <browsenode>                 <browsenodeid>3375251</browsenodeid>                 <name>sports & outdoors</name>             </browsenode>         </ancestors>     </browsenode> </browsenodes> 

as can see, each child element has same name. i've seen examples using xpath, etc... can't seem wrap head around it. additionally, i've tried counting children, counts first level... no dice there. same trying see of children of each (pretend $nodes browsenodes based on xml above).

ideally i'd snag browsenode directly under <iscategoryroot>1</iscategoryroot>. again, first thought count children of , sticks @ first level.

foreach($nodes->browsenode->children() $child) {     echo $child->getname() . "<br>"; } 

any appreciated. i'm sure i'm missing simple.

here returned when item in simplexml (keep in mind i'm working simplexml object @ point - example i'm accessing $whateveritem->browsenodes:

object(simplexmlelement)#6 (1) {   ["browsenode"]=>   object(simplexmlelement)#5 (3) {     ["browsenodeid"]=>     string(7) "3403551"     ["name"]=>     string(19) "resistance trainers"     ["ancestors"]=>     object(simplexmlelement)#9 (1) {       ["browsenode"]=>       object(simplexmlelement)#10 (3) {         ["browsenodeid"]=>         string(10) "6389526011"         ["name"]=>         string(27) "bike trainers & accessories"         ["ancestors"]=>         object(simplexmlelement)#11 (1) {           ["browsenode"]=>           object(simplexmlelement)#12 (3) {             ["browsenodeid"]=>             string(7) "3403201"             ["name"]=>             string(7) "cycling"             ["ancestors"]=>             object(simplexmlelement)#13 (1) {               ["browsenode"]=>               object(simplexmlelement)#14 (3) {                 ["browsenodeid"]=>                 string(9) "706814011"                 ["name"]=>                 string(18) "outdoor recreation"                 ["ancestors"]=>                 object(simplexmlelement)#15 (1) {                   ["browsenode"]=>                   object(simplexmlelement)#16 (4) {                     ["browsenodeid"]=>                     string(7) "3375301"                     ["name"]=>                     string(10) "categories"                     ["iscategoryroot"]=>                     string(1) "1"                     ["ancestors"]=>                     object(simplexmlelement)#17 (1) {                       ["browsenode"]=>                       object(simplexmlelement)#18 (2) {                         ["browsenodeid"]=>                         string(7) "3375251"                         ["name"]=>                         string(17) "sports & outdoors"                       }                     }                   }                 }               }             }           }         }       }     }   } } object(simplexmlelement)#5 (1) {   ["browsenode"]=>   array(2) {     [0]=>     object(simplexmlelement)#3 (3) {       ["browsenodeid"]=>       string(7) "3403551"       ["name"]=>       string(19) "resistance trainers"       ["ancestors"]=>       object(simplexmlelement)#11 (1) {         ["browsenode"]=>         object(simplexmlelement)#12 (3) {           ["browsenodeid"]=>           string(10) "6389526011"           ["name"]=>           string(27) "bike trainers & accessories"           ["ancestors"]=>           object(simplexmlelement)#13 (1) {             ["browsenode"]=>             object(simplexmlelement)#14 (3) {               ["browsenodeid"]=>               string(7) "3403201"               ["name"]=>               string(7) "cycling"               ["ancestors"]=>               object(simplexmlelement)#15 (1) {                 ["browsenode"]=>                 object(simplexmlelement)#16 (3) {                   ["browsenodeid"]=>                   string(9) "706814011"                   ["name"]=>                   string(18) "outdoor recreation"                   ["ancestors"]=>                   object(simplexmlelement)#17 (1) {                     ["browsenode"]=>                     object(simplexmlelement)#18 (4) {                       ["browsenodeid"]=>                       string(7) "3375301"                       ["name"]=>                       string(10) "categories"                       ["iscategoryroot"]=>                       string(1) "1"                       ["ancestors"]=>                       object(simplexmlelement)#19 (1) {                         ["browsenode"]=>                         object(simplexmlelement)#20 (2) {                           ["browsenodeid"]=>                           string(7) "3375251"                           ["name"]=>                           string(17) "sports & outdoors"                         }                       }                     }                   }                 }               }             }           }         }       }     }     [1]=>     object(simplexmlelement)#10 (3) {       ["browsenodeid"]=>       string(11) "11130424011"       ["name"]=>       string(27) "outdoor recreation features"       ["ancestors"]=>       object(simplexmlelement)#11 (1) {         ["browsenode"]=>         object(simplexmlelement)#12 (2) {           ["browsenodeid"]=>           string(7) "3375251"           ["name"]=>           string(17) "sports & outdoors"         }       }     }   } } 

xpath allows fetch specific nodes document. in simplexmlsimplexmlelement::xpath() allows use xpath expressions. result array of simplexmlelement objects (for valid expression). expression depends on how define 'last'.

the last browsenode element in document @ level:

$nodes = new simplexmlelement($xml); var_dump($nodes->xpath('(//browsenode)[last()]')); 

the "browsenode" elements @ deepest levels (multiple possible). "browsenode" elements have no descendant name:

$nodes = new simplexmlelement($xml); var_dump($nodes->xpath('//browsenode[not(.//browsenode)]')); 

of course can nodes have child iscategoryroot value 1, too. there can fetch browsenode inside it:

$nodes = new simplexmlelement($xml); var_dump($nodes->xpath('//browsenode[iscategoryroot=1]/ancestors/browsenode')); 

Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -