0

我正在使用 xpath 在我的 xml 中查询“名称为“FT”的结果项,但我知道某些结果项没有,因为它是实时提要。我能否为这些“非对象”分配一个值所以我可以将它们输入到我的 mysql 以及返回的值中吗?

以下是我的 xml 的部分结果项:

 <live>
    <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>
    </Match>

    <Match ct="0" id="771599" LastPeriod="1 HF" LeagueCode="19984" LeagueSort="1" LeagueType="LEAGUE" startTime="16:00" status="2 HF" statustype="live" type="2" visible="1">

        <Home id="11678" name="Norwich City" standing="1"/>
    <Away id="10828" name="West Ham United" standing="3"/>

    <Results>
            <Result id="1" name="Current" value="2-3"/>
            <Result id="2" name="HT" value="1-3"/>
        </Results>
    </Match>
    </live>

我正在尝试通过以下 php 获取所有名称为 'FT' 的分数:

$result = $xpath->query('./Results/Result[@name="FT"]', $match);
    $halftimescore = $result->item(0)->getAttribute("value");

我也改变了上面的:

    $result = $xpath->query('./Results/Result[@name="FT"]', $match);

      if($result->length > 0) {
      $halftimescore = $result->item(0)->getAttribute("value");
}

这消除了错误,但我得到 FT 值 1-1、3-0,对于非对象,它重复 3-0

4

1 回答 1

2

您的 xpath 查询似乎是在$matches.

如果 current 没有 FT 结果,如果您没有在循环开始时初始化它的值,则保持前一个的值是<Match>正常的。$halftimescore

您需要$halftimescore为每个初始化<Match>

$halftimescore = null;
$result = $xpath->query('./Results/Result[@name="FT"]', $match);
if($result->length > 0) {
  $halftimescore = $result->item(0)->getAttribute("value");
}

或者使用 else 语句:

$result = $xpath->query('./Results/Result[@name="FT"]', $match);
if($result->length > 0) {
  $halftimescore = $result->item(0)->getAttribute("value");
} else {
  $halftimescore = null;
}

顺便说一句,由于一场比赛只能有一个 FT 分数,我会用它$result->length === 1来测试 xpath 结果。

于 2012-12-12T09:53:19.283 回答