SimpleXML显示特定属性的数据

时间:2013-06-27 04:49:52

标签: xml simplexml

我是一个总菜鸟,我有一个问题。任何帮助将不胜感激。从下面的示例中输出带有promocode selma的项目的点击次数。我可以用

 $data=simplexml_load_file("data.xml"); 

 echo $data->item[1]->clicks.'<br />';

但有人可以告诉我如何使用属性名称输出点击代码。像

这样的东西
 echo $data->item[selma]->clicks.'<br />';

我知道这是错的,但我希望你能得到我的问题。任何帮助将不胜感激

<data>
 <item promocode="harry" program="250" program_name="PPS Web">
  <clicks>3730</clicks>
  <PPSWeb30>0</PPSWeb30>
  <PPSWeb75>17</PPSWeb75>
  <total>1275</total>
</item>
<item promocode="selma" program="251" program_name="PPS Mobile">
 <clicks>366</clicks>
 <PPSWeb30>0</PPSWeb30>
 <PPSWeb75>1</PPSWeb75>
 <total>75</total>
</item>
</data>

2 个答案:

答案 0 :(得分:0)

您可以使用XPATH

执行此操作
$nodes = $xml->xpath('//item[@promocode="selma"]');

$item = $nodes[0];

参考here

答案 1 :(得分:0)

这应该可以满足您的需求。您必须浏览每个项目的属性并进行比较并获得点击次数。

$xml = '<data>
        <item promocode="harry" program="250" program_name="PPS Web">
          <clicks>3730</clicks>
          <PPSWeb30>0</PPSWeb30>
          <PPSWeb75>17</PPSWeb75>
          <total>1275</total>
        </item>
        <item promocode="selma" program="251" program_name="PPS Mobile">
         <clicks>366</clicks>
         <PPSWeb30>0</PPSWeb30>
         <PPSWeb75>1</PPSWeb75>
         <total>75</total>
        </item>
    </data>';

$data = simplexml_load_string($xml); 

$search_promo = "selma";

foreach ($data->item as $item) {
    $attributes = $item->attributes();
    if ($attributes["promocode"] == $search_promo) {
        $clicks = $item->clicks; // 366
        //...
    }
}