Php 为什么我的simplexml\u加载\u文件无法工作?

Php 为什么我的simplexml\u加载\u文件无法工作?,php,simplexml,Php,Simplexml,我一直在使用simplexml\u load\u文件获取XML内容,你知道为什么它不起作用吗?这和下面的来源有关吗 $Url='http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS'; $XML=simplexml_load_file($Url); 你应使用: $Url='http://datacenter.biathlonresults.com/module

我一直在使用simplexml\u load\u文件获取XML内容,你知道为什么它不起作用吗?这和下面的来源有关吗

$Url='http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS';
$XML=simplexml_load_file($Url);
你应使用:

$Url='http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS';
$XML=simplexml_load_file(file_get_contents($Url));

发现文件_get_contents返回JSON,所以:

$x=json_解码(文件获取内容($Url))


如果您在浏览器中打开此链接,它是xml,那么这会不会有什么影响…

出于fom原因。如果你想让我通过php,那就是JSON。 试试这个代码

$Url='http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS';

$fileContent =  json_decode(file_get_contents($Url));
您的代码中有两个小错误(但很常见),它们阻止您自己快速发现这里发生了什么(以及如何找到解决方案)

首先,您没有进行任何错误检查
simplexml\u load\u file()
如果无法打开文件,将返回
FALSE

$xml = simplexml_load_file($url);
if (!$xml) {
    // error opening the URL
    return false;
}
这还不是很有用,您现在可以启用PHP错误报告/日志记录来查看创建了哪些错误:


警告:simplexml\u加载\u文件()http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS:1: 分析器错误:应为开始标记,'这不是文件。这是一个URL。你是对的,我认为它会与URL有关,但这个URL正在生成xml输出,不是吗?你能告诉我如何得到结果吗?@michalslessinger:请启用PHP错误报告和日志记录。然后查看实际的错误消息。另请参见:我认为在不进行任何调试或不提供错误消息的情况下问“为什么XXX不工作”这样的问题是没有建设性的。这并没有解决问题,仍然不工作。。。我还尝试了file\u get\u contents,然后是simplexml\u load\u string,没有想法了…:/你也不应该用它。在内部,file_get_内容和simplexml_load_文件使用完全相同的例程。除此之外,答案中给出的代码显然是错误的,它可能意味着使用simplexml\u load\u字符串而不是simplexml\u load\u文件-1.是的,我也发现了同样的情况,无论如何,谢谢……;)
stream_context_set_default(['http' => ['header' => "Accept: text/xml"]]);
$xml = simplexml_load_file($url);
<?php

$url = 'http://datacenter.biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS';
stream_context_set_default(['http' => ['header' => "Accept: text/xml"]]);
$xml = simplexml_load_file($url);
if (!$xml) {
    // error opening the file
    var_dump(libxml_get_errors());
    return false;
}

$xml->asXML('php://output');
<?xml version="1.0"?>
<CupResultsResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/sportapi"><AsOf>2014-12-22T11:45:50.5976703+00:00</AsOf><RaceCount>25</RaceCount><Rows><CupResultRow>[...]