douwenan9849 2011-04-23 20:48
浏览 39
已采纳

PHP - simpleXML

I have this xml:

<events>
   <event>
      <eventId>Bskt-Bulls-Pacer-042111</eventId>
      <eventDescriptor></eventDescriptor>
      <eventStatus></eventStatus>
      <markets>
         <market>
            <lineType>PSH</lineType>
            <status>1</status>
            <num>100</num>
            <den>110</den>
            <points>4.0</points>
            <quickbet></quickbet>
            <price>-110</price>
            <openNum>100</openNum>
            <openDen>110</openDen>
            <openPoints>-5.0</openPoints>
            <openPrice>-110</openPrice>
            <percentage>23%</percentage>
         </market>
         <market></market>
         <market></market>
         <market>
            <lineType>PSA</lineType>
            <status>1</status>
            <num>100</num>
            <den>110</den>
            <points>-4.0</points>
            <quickbet>
               selection[Bskt-Bulls-Pacer-042111PSA]=Bskt-Bulls-Pacer-042111|PSA|1|100|110|-8|-110
            </quickbet>
            <price>-110</price>
            <openNum>100</openNum>
            <openDen>110</openDen>
            <openPoints>5.0</openPoints>
            <openPrice>-110</openPrice>
            <percentage>77%</percentage>
         </market>
         <market></market>
         <market></market>
      </markets>
      <hosturl></hosturl>
   </event>
   <event></event>
   <event></event>
   <event></event>
   <event></event>
   <event></event>
   <event></event>
   <event></event>
</events>

I'm stuck trying to pull out only <points> from market when lineType = PSA and TLO. I need to pull this from multiple <event> nodes. How do I test lineType in <market> in each <event> and pull out the ones I want?

This is what I have, but clearly isn't working:

foreach ($xml->event as $event) {

foreach ($xml->event->markets->market as $market) {

    if ($market->lineType == 'TLO') {

        echo "points are TLO  = " . $market->points;                

    }

    if ($market->lineType == 'PSH')  {

       echo "points are PSA = " . $market->points;


    }

    }
}
  • 写回答

2条回答 默认 最新

  • donkey199024 2011-04-23 22:02
    关注

    you can use the DOMDocument approach as shown above.

    I think the error in your code is that you are assuming that event is a single node in the inner loop. As shown in your xml, the event tag appears multiple times, so you need to use $event in the inner loop :-

    foreach ($xml->event as $event) {
    
    foreach ($event->markets->market as $market) {
    
        if ($market->lineType == 'TLO') {
            echo "points are TLO  = " . $market->points;
        }
    
        if ($market->lineType == 'PSH')  {
            echo "points are PSA = " . $market->points;
        }
    
     }
     }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像