我在下面有一些xml代码,我试图获得结果标记中所有“结果值”属性的值。事情是......这将是一个实时馈送,因此该标签中可能有1,2或3个结果项。
我是否需要进行某种计数以查看结果标记中有多少项?
<Match ct="0" id="771597" LastPeriod="2 HF" LeagueCode="19984" LeagueSort="1" LeagueType="LEAGUE" startTime="15:00" status="2 HF" statustype="live" type="2" visible="1">
<Home id="11676" name="Manchester City" standing="1"/>
<Away id="10826" name="Newcastle United" standing="3"/>
<Results>
<Result id="1" name="CURRENT" value="1-1"/>
<Result id="2" name="FT" value="1-1"/>
<Result id="3" name="HT" value="1-0"/>
</Results>
<Information>
<league id="19984">Premier League</league>
<note/>
<bitarray/>
<timestamp/>
</Information>
</Match>
提前致谢
答案 0 :(得分:1)
只需使用SimpleXML循环搜索结果,即可获取每个value
和name
属性,这将使用可变数量的结果。
<强> Demo 强>
$obj = simplexml_load_string($xml);
foreach($obj->Results->Result as $result)
{
echo $result->attributes()->name . ': ' . $result->attributes()->value . "\n";
}
<强>输出强>
当前:1-1
FT:1-1
HT:1-0
如果您的根节点如Matches
下有多个Match
,那么您可以使用嵌套的foreach
,如下所示:
foreach($obj->Match as $match)
{
foreach($match->Results->Result as $result)
{
echo $result->attributes()->name . ': ' . $result->attributes()->value . "\n";
}
}
使用DOMDocument代替SimpleXML执行相同操作:
$dom = new DOMDocument();
$dom->loadXML($xml);
foreach($dom->getElementsByTagName('Match') as $match)
{
foreach($match->getElementsByTagName('Result') as $result)
{
echo $result->getAttribute('name') . ': ' . $result->getAttribute('value') . "\n";
}
}
输出与SimpleXML方法相同。