0

我在下面有这段 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>

提前致谢

4

1 回答 1

1

简单XML

只需使用SimpleXML遍历结果以获取每个属性valuename这将适用于可变数量的结果。

演示

$obj = simplexml_load_string($xml);

foreach($obj->Results->Result as $result)
{
    echo $result->attributes()->name . ': ' . $result->attributes()->value . "\n";
}

输出

当前: 1-1
英尺: 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";
    }
}

DOM文档

使用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 方法相同。

于 2012-12-11T14:58:12.747 回答