Karmaşık çoklu XML Ayrıştırma PHP5'ta niteliklerini

2 Cevap php

Merhaba çocuklar önce bu site öyle biçimlendirmeyi bahane yazılan.

Ben php ile xml ayrıştırma için yeni ve de bu xml feed beni şaşkına etti değilim. Ben sadece eleman tabanlı formatları kullanarak, ama bu kadar çok karmaşık bağlıyor olsun. Ben daha kolay eleman tabanlı biçimi değiştirmek için siteyi almaya çalıştı ama onlar özelliklerini kullanarak bu format ile yapışmasını konum ve özellikle her üyelerinin sıralaması ve puan için bir liste / sıralama tarzı biçiminde tüm verileri çekerek bir sabit zaman yaşıyorum .

sadece 2 üye ile xml dosyası örneği, ama gerçekte 100'ler ve 1000'ler takım kimliği orada bağlı olabilir.

<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>

ve çıkış biçimi istedim

    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]

Herhangi bir yardım bana doğru yönde direksiyon takdir edilmektedir. Teşekkürler

2 Cevap

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

Local.xml daki xml kodunu yerleştirin

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

}
?>