如何解析xml feed - 期望开始标记,'<'未找到

时间:2014-10-24 21:05:21

标签: php xml

我正在尝试使用这样的simplexml在http://smarkets.s3.amazonaws.com/oddsfeed.xml解析xml提要:

$xml = simplexml_load_file('http://smarkets.s3.amazonaws.com/oddsfeed.xml');

但收到错误 - 期望开始标记,'<'没找到。

我认为这是因为xml格式不正确?

有谁知道如何在php中解析它。

由于

1 个答案:

答案 0 :(得分:3)

我建议您使用cURL加载URL的内容,然后解析该内容。

$curl = curl_init();

curl_setopt_array($curl, Array(
    CURLOPT_URL            => 'http://smarkets.s3.amazonaws.com/oddsfeed.xml',
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_ENCODING       => 'UTF-8'
));

$data = curl_exec($curl);
curl_close($curl);

$xml = simplexml_load_string($data);

通过这种方式,您可以准确地看到SimpleXML正在解析的内容。对于其他调试,您可以在解析实际XML之前添加以下行(取自PHP网站http://php.net/manual/en/simplexml.examples-errors.php):

libxml_use_internal_errors(true);
$sxe = simplexml_load_string($data);
if ($sxe === false) {
    echo "Failed loading XML\n";
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}