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