Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/11/2013, 19:02
Avatar de adryan310
adryan310
 
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 6 meses
Puntos: 3
Pregunta Como tomar estos nodos de este xml con PHP?

Hola gente,

Tengo este xml
Cita:
<scores>
<game time="Nov 19 2013 12:30:00:000AM">
<sport id="5" name=""/>
<league id="9" name=""/>
<away number="26217" name="Costa Rica" abbr="CR" score="0" points="0.3" price="-115" ML="222" opener_points="0.5" opener_price="-111" opener_ML="330"/>
<home number="26218" name="Australia" abbr=" " score="1" points="-0.3" price="105" ML="140" opener_points="-0.5" opener_price="102" opener_ML="-101"/>
<status time_remaining=" " value="Final"/>
<total points="2.3" over="101" under="-112" opener_total="2.3" opener_over="111" opener_under="-125"/>
<period number="1" away_score="0" home_score="0"/>
<period number="2" away_score="0" home_score="1"/>
</game>
<game time="Nov 19 2013 06:00:00:000AM">
<sport id="5" name=""/>
<league id="9" name=""/>
<away number="26221" name="South Korea" abbr=" " score="1" points="" price="" ML="" opener_points="" opener_price="" opener_ML=""/>
<home number="26222" name="Russia" abbr=" " score="2" points="" price="" ML="" opener_points="" opener_price="" opener_ML=""/>
<status time_remaining=" " value="Final"/>
<total points="" over="" under="" opener_total="" opener_over="" opener_under=""/>
<period number="1" away_score="1" home_score="1"/>
<period number="2" away_score="0" home_score="1"/>
</game>
</scores>
Tengo este codigo que me funciona bien
Código PHP:
 // Loads XML.
 
$doc = new DOMDocument('1.0''utf-8');
 
$doc->preserveWhiteSpace false;
 
$doc->loadXML(file_get_contents('http://www.proveedor.com/scores.php')); 
 
 
// Reading all elements with tag name="game".
 
$cds $doc->getElementsByTagName"game" ); 
 
$data = array();
 
 foreach (
$cds as $cd
 {        
    
$onlyHour TranslateDateOnlyHour($cd->getAttribute('time'));
    if (
array_key_exists('period'$cd)) {
      
$period1A $cd->getElementsByTagName("period")->item(0)->getAttribute('away_score');
      
$period1H $cd->getElementsByTagName("period")->item(0)->getAttribute('home_score');
    }else{
      
$period1A '';
      
$period1H '';
    }
    
    
$data[] = array('time'     => TranslateDate($cd->getAttribute('time')),
                    
'sport'    => TranslateSport($cd->getElementsByTagName("sport")->item(0)->getAttribute('id')),
                       
'league'   => TranslateLeague($cd->getElementsByTagName("league")->item(0)->getAttribute('id')),
                    
'away'     => $cd->getElementsByTagName("away")->item(0)->getAttribute('abbr'),
                    
'home'     => $cd->getElementsByTagName("home")->item(0)->getAttribute('abbr'),
                    
'awayName' => $cd->getElementsByTagName("away")->item(0)->getAttribute('name'),
                    
'homeName' => $cd->getElementsByTagName("home")->item(0)->getAttribute('name'),
                    
'aNumber'  => $cd->getElementsByTagName("away")->item(0)->getAttribute('number'),
                    
'hNumber'  => $cd->getElementsByTagName("home")->item(0)->getAttribute('number'),
                    
'aScores'  => $cd->getElementsByTagName("away")->item(0)->getAttribute('score'),
                    
'hScores'  => $cd->getElementsByTagName("home")->item(0)->getAttribute('score'),
                    
'status'   => $cd->getElementsByTagName("status")->item(0)->getAttribute('value'),
                    
'timeG'    => $cd->getElementsByTagName("status")->item(0)->getAttribute('time_remaining'),
                    
'1stA'     => $period1A,
                    
'1stH'     => $period1H,
                    
'hour'     => $onlyHour);

 } 
el problema que tengo es que en algunos casos el nodo period aparece solo una vez, en otras 2 veces y en otras no aparece. El periodo tiene un number si el marcador de casa y visita, por ello necesito saber el marcador de casa y visita del periodo con el number 1 y asi sucesivamente, gracias.