3

我对 php 真的很陌生,我试图将来自外部 xml 提要的数据加载到 php 文档中,然后使用该数据生成输出。

我使用的 xml 提要是 - http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=1&marketSort=--&filterBIR=N

我想要做的是生成一个“市场”列表和名称,因此在编写列表中的前 3 个项目时,xml 提要是:

  • 苏格兰第 1 赛区 - 完全 - 完全
  • 邓巴顿 v 汉密尔顿 - 上半场结果/下半场结果
  • 邓巴顿 v 汉密尔顿 - 比赛让分

目前我正在尝试使用下面的代码来实现这一点,但是我很快就无法使用它,关于我在这里做错了什么有什么想法吗?

只是进一步的背景,我正在使用 php 5.4.4,我认为 simplexml 已经预先安装了.. 所以我不需要在这里添加任何额外的东西吗?

<?php 

$xml = simplexml_load_file('http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=1&marketSort=--&filterBIR=N');

foreach ($xml->market as $event) {
  echo $event;
}

?>
4

2 回答 2

3

你需要通过xml下钻得到市场,然后得到市场的属性

<?php 

$xml = simplexml_load_file('http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=1&marketSort=--&filterBIR=N');

foreach ($xml->response->williamhill->class->type as $type) {
  $type_attrib = $type->attributes();
  echo "<p><h2>Type ".$type_attrib['id'].": ".$type_attrib['name']."</h2>";
  foreach ($type->market as $event) {
    $event_attributes = $event->attributes();
    echo $event_attributes['name']."<br />";
    //commented out the following which prints all attributes
    //replaced by above to just print the name
    /*
    echo "<p>";
    foreach($event->attributes() as $attrib=>$value) {
      echo "$attrib: $value <br />";
    }
    echo "</p>";
    */
  }
  echo "</p>";
}
于 2013-01-21T16:34:21.947 回答
0

例如,您可以显示参与者的姓名和各自的赔率:

<?php 

$xml = simplexml_load_file('http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=1&marketSort=--&filterBIR=N');


$data = $xml->response->williamhill->class->type->market;
$ps = $data->participant;
foreach($ps as $p)
{
    echo $p['name']." - ".$p['odds']."<br />";
}

?>
于 2013-01-21T16:40:54.620 回答