获取所有xml元素ID并计入一个数字的方法?

时间:2012-12-11 15:47:09

标签: php xml

好吧,让我说我有一个xml看起来像这个例子,

   <?xml version="1.0" encoding="UTF-8"?>

   <stats id="865" name="blaah">
       <example name="blaahblaah">
           <example1>
               <x ppoints="500"/>
           </example1>
           <example2>
               <x ppoints ="150"/>
               <x points ="500"/>
               <x ppoints ="140"/>
               <x points="200"/>
           </example2>
       </example>
   </stats>

我在这里要做的是获取所有的ppoints并将它们分成一个数字和所有的点并将它们四舍五入为一个数字, 像这样

统计数据:“四舍五入”p&​​amp; “四舍五入”p

帮助任何人?非常感谢

1 个答案:

答案 0 :(得分:2)

在这种情况下,据我所知,文档的结构可以包含多个“示例”节点,我认为最好的方法是加载XML文档并使用XPath表达式来获取{{1}的所有节点}属性和ppoints属性。

使用XPath有两种可能的解决方案。一个使用SimpleXMLElement::xpath来检索所有必需的节点并手动求和。另一个使用DOMXPath::evaluate,它允许评估任何类型的XPath表达式,并使用XPath对值进行求和。后一种解决方案更简单。

DOMXPath ::评价

points

的SimpleXMLElement ::的xpath

<?php

$doc = new DOMDocument;
$doc->load('file.xml');
$xpath = new DOMXPath($doc);

$sum_ppoints = $xpath->evaluate('sum(//x/@ppoints)');
$sum_points = $xpath->evaluate('sum(//x/@points)');

print "Ppoints: $sum_ppoints; Points: $sum_points\n";

?>