Question

Salut les gars premier message sur ce site pour excuser le formatage.

Je suis nouveau xml avec php et l'analyse syntaxique bien ce flux xml m'a déconcerté. Je reçois en utilisant uniquement les formats à base d'éléments, mais attribue ce complexe pas tant. J'ai essayé de le site pour changer plus facile format basé sur des éléments, mais ils sont coller avec ce format en utilisant les attributs et je vais avoir du mal à tirer toutes les données dans une liste / classement format de style en particulier pour le classement et les points de chaque membre .

exemple de fichier xml avec seulement 2 membres, mais en réalité, il pourrait y 100s et 1000s en fonction de l'équipe 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>

et la sortie au format voulu

    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]

Toute aide est appréciée en moi de direction dans la bonne direction. Merci

Était-ce utile?

La solution

Utilisez 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>';

Autres conseils

Placez votre code xml dans 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>';

}
?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top