php简单的xml孩子点头号加

时间:2011-10-23 08:55:57

标签: php simplexml

我想用php简单的xml解析一些像这样的树。

如何加上所有tree->item->object->num

我想要一个int 162 + 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>

3 个答案:

答案 0 :(得分:4)

$xml = new SimpleXMLElement($yourXMLString);

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

echo $acc; // 16

答案 1 :(得分: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;

答案 2 :(得分: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;
}
相关问题