Domanda

Ciao ragazzi primo post su questo sito in modo scusare la formattazione.

Sono nuovo di analisi XML con PHP e ben questo feed xml mi ha messo in difficoltà. Ottengo utilizzando esclusivamente i formati degli elementi base, ma attribuisce questo complesso non tanto. Ho cercato di ottenere il sito di cambiare al più semplice formato di elemento di base ma stanno attaccare con questo formato utilizzando attributi e sto avendo un momento difficile tirare tutti i dati in un elenco / ranking formato stile particolarmente per le classifiche ei punti ciascuno membri .

esempio di file XML con solo 2 membri, ma in realtà ci potrebbe 100s e 1000s seconda squadra id.

<sitemembers>
  <members>
    <member>
      <name>username</name>
      <team id="1200">team1 name</team>
      <rank>
        <today rank="34" points="613.30" results="70"/>
        <yesterday rank="33" points="614.20" results="70"/>
        <lastweek rank="60" points="541.70" results="68"/>
        <lastmonth rank="163" points="415.60" results="63"/>
      </rank>
      <awards>
        <global gold="0" silver="0" bronze="0" medal="1"/>
        <local gold="5" silver="2" bronze="0" medal="3"/>
      </awards>
    </member>
    <member>
      <name>username2</name>
      <team id="1200">team1 name</team>
      <rank>
        <today rank="46" points="577.80" results="178"/>
        <yesterday rank="45" points="580.00" results="178"/>
        <lastweek rank="40" points="586.60" results="178"/>
        <lastmonth rank="75" points="503.60" results="169"/>
      </rank>
      <awards>
        <global gold="0" silver="0" bronze="0" medal="0"/>
        <local gold="0" silver="2" bronze="2" medal="6"/>
      </awards>
    </member>
  </members>
</sitemembers>

e l'output voluto in formato

    Members ranking for team1 name (teamid: 1200)

    1. username
    Current rank: 34 : 613.30 pts (submissions: 70)
    Yesterday rank: 33 : 614.20 ps (submissions: 70)
    Last week rank: 60 : 541.70 pts (submissions: 68)
    Last month rank: 163 : 415.60 (submissions: 63)
    Global awards: 1 medals - [Gold: 0 Silver: 0 Bronze: 0]
    Local awards: 3 medals - [Gold: 5 Silver: 2 Bronze: 0]

    2. username2
    Current rank: 46 : 577.80 pts (submissions: 178)
    Yesterday rank: 45 : 580.00 ps (submissions: 178)
    Last week rank: 40 : 588.60 pts (submissions: 178)
    Last month rank: 75 : 503.60 (submissions: 169)
    Global awards: 0 medals - [Gold: 0 Silver: 0 Bronze: 0]
    Local awards: 6 medals - [Gold: 0 Silver: 2 Bronze: 2]

Ogni aiuto è apprezzato in me sterzo nella direzione giusta. Grazie

È stato utile?

Soluzione

SimpleXML

$sitemembers = simplexml_load_string($xml);

echo '<ol>';
foreach ($sitemembers->members->member as $member)
{
    $today = $member->rank->today;
    echo '<li>', $member->name, '<br />',
         'Current rank: ', $today['rank'], ' : ', $today['points'];
    // etc...
    echo '</li>';
}
echo '</ol>';

Altri suggerimenti

posiziona il codice XML in local.xml

$sitemembers = simplexml_load_file("local.xml");

foreach ($sitemembers->members->member as $member)
{


$today = $member->rank->today;
$yesterday=$member->rank->yesterday;
$lastweek=$member->rank->lastweek;
$lastmonth=$member->rank->lastweek;
$awards1=$member->awards->global;
$awards2=$member->awards->local;

echo '<li>', $member->name, '<br />',
     'Current rank: ', $today['rank'], ' : ', $today['points'], 'pts' , '(Submission :', $today['results'], ')';
echo '<br />',
     'Yesterday rank: ', $yesterday['rank'], ' : ', $yesterday['points'], 'pts' , '(Submission :', $yesterday['results'], ')';
echo '<br />',
     'Last week rank: ', $lastweek['rank'], ' : ', $lastweek['points'], 'pts' , '(Submission :', $lastweek['results'], ')';
echo '<br />',
     'Last month rank: ', $lastmonth['rank'], ' : ', $lastmonth['points'], 'pts' , '(Submission :', $lastmonth['results'], ')';
echo '<br />',
     'Global award: ', $awards1['medal'], ' - '.'[ Gold:'.$awards1['gold'].' '.'Silver:'.$awards1['silver'].' '.'Bronze:'.$awards1['bronze'].']';
 echo '<br />',    
     'Local award: ', $awards2['medal'], ' - '.'[ Gold:'.$awards2['gold'].' '.'Silver:'.$awards2['silver'].' '.'Bronze:'.$awards2['bronze'].']';
echo '</li>';

}
?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top