在PHP5中解析复杂的多个XML属性

在PHP5中解析复杂的多个XML属性,php,xml,xml-parsing,Php,Xml,Xml Parsing,大家好,我是第一次在这个网站上发帖的,所以请原谅我的格式问题 我不熟悉用php解析xml,这个xml提要让我很困惑。我使用的是纯基于元素的格式,但这种复杂的属性并不多。我试图让网站改为更简单的基于元素的格式,但他们坚持使用属性的格式,我很难将所有数据以列表/排名的方式整理出来,尤其是每个成员的排名和分数 示例xml文件只有2个成员,但实际上可能有100和1000个成员,具体取决于团队id <sitemembers> <members> <member&g

大家好,我是第一次在这个网站上发帖的,所以请原谅我的格式问题

我不熟悉用php解析xml,这个xml提要让我很困惑。我使用的是纯基于元素的格式,但这种复杂的属性并不多。我试图让网站改为更简单的基于元素的格式,但他们坚持使用属性的格式,我很难将所有数据以列表/排名的方式整理出来,尤其是每个成员的排名和分数

示例xml文件只有2个成员,但实际上可能有100和1000个成员,具体取决于团队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>
任何帮助都会让我朝着正确的方向前进。谢谢使用

$sitembers=simplexml\u load\u字符串($xml);
回声';
foreach($sitembers->members->members as$member)
{
$today=$member->rank->today;
回显“
  • ”,$member->name“
    ”, “当前排名:”、$today['rank']、“:”、$today['points'”; //等等。。。 回音“
  • ”; } 回声';
    将xml代码放在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>';
    
    }
    ?>
    
    $sitembers=simplexml\u load\u文件(“local.xml”);
    foreach($sitembers->members->members as$member)
    {
    $today=$member->rank->today;
    $beday=$member->rank->beday;
    $lastweek=$member->rank->lastweek;
    $lastmonth=$member->rank->lastweek;
    $awards1=$member->awards->global;
    $awards2=$member->awards->local;
    回显“
  • ”,$member->name“
    ”, “当前排名:”、$today['rank']、':'、$today['points']、'pts'、'(提交:'、$today['results']、'); 回显“
    ”, "昨日排名:","昨日排名",":","昨日得分","分数",""(提交),"昨日排名","; 回显“
    ”, “上周排名:”、$lastweek['rank']、“:”、$lastweek['points']、'pts'、“(提交:”、$lastweek['results']、”); 回显“
    ”, “上月排名:”、$lastmonth['rank']、“:”、$lastmonth['points']、'pts'、”(提交:“、$lastmonth['results']、”); 回显“
    ”, “全球奖:”、$awards1[“奖牌”]、“-”、“[金牌:”、$awards1[“金牌”]、“银牌:”、$awards1[“银牌”]、“铜牌:”、$awards1[“铜牌”]。”; 回显“
    ”, ‘本地奖项:’、$awards2[‘奖牌’]、'-'.[金牌:'.$awards2[‘金牌’.'.'银牌:'.$awards2[‘银牌’.'.'铜牌:'.$awards2[‘铜牌’.].'; 回音“
  • ”; } ?>
    到目前为止您有什么?您使用的是与XML相关的扩展()还是其他什么?哇,Josh,您做到了,工作得非常好。谢谢:)
    $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>';
    
    $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>';
    
    }
    ?>