2011-10-23 2 views
0

나는이 같은 간단한 트리를 몇 가지 나무를 구문 분석 PHP를 사용합니다.PHP 단순 XML 자식 노드 번호 플러스

플러스 모든 방법 tree->item->object->num?

내가 얻을 싶은 INT 16 (2 + 4 + 7 + 2 + 1)

<tree> 
    <item> 
    <object> 
     <num>2</num> 
    </object> 
    <object> 
     <num>4</num> 
    </object> 
    </item> 
    <item> 
    <object> 
     <num>7</num> 
    </object> 
    <object> 
     <num>2</num> 
    </object> 
    </item> 
    <item> 
    <object> 
     <num>1</num> 
    </object> 
    </item> 
</tree> 

답변

2

심플/추한 버전 :

$dom = new DOMDocument(); 
$dom->loadXML($your_xml); 

$xp = new DOMXPath($dom); 

$nums = $xp->query('//num'); 
$sum = 0; 
foreach($nums as $num) { 
    $sum += $num->nodeValue; 
} 
echo $sum; 
4
$xml = new SimpleXMLElement($yourXMLString); 

$acc = 0; 
foreach($xml->item as $item) 
{ 
    foreach($item->object as $object) 
    { 
     $acc += $object->num; 
    } 
} 

echo $acc; // 16 
0
$tree = simplexml_load_string($xmlstring); 
$nums = $tree->xpath('/tree/item/object/num'); 

// Array functions to sum the numbers 
$sum = array_sum(array_map('intval', $nums)); 

// or, Loop to sum the number 
$sum = 0; 
foreach ($nums as $num) { 
    $sum += $num; 
}