Php SimpleXMLElement-无法将字符串解析为XML

Php SimpleXMLElement-无法将字符串解析为XML,php,xml,simplexml,Php,Xml,Simplexml,我在加载外部XML文件时遇到问题 当我在浏览器中打开它时,一切看起来都很好。我试图下载XML文件并将其上传到我自己的服务器上。当我尝试从服务器加载XML文件时,一切都正常 有人能帮我解决这个问题,这样我就可以从外部服务器加载它了吗 我的代码: $oXML_cz = new SimpleXMLElement(file_get_contents('http://www.ticketportal.cz/xml/temp/partnerall1.xml?ID_partner=122')); foreac

我在加载外部XML文件时遇到问题

当我在浏览器中打开它时,一切看起来都很好。我试图下载XML文件并将其上传到我自己的服务器上。当我尝试从服务器加载XML文件时,一切都正常

有人能帮我解决这个问题,这样我就可以从外部服务器加载它了吗

我的代码:

$oXML_cz = new SimpleXMLElement(file_get_contents('http://www.ticketportal.cz/xml/temp/partnerall1.xml?ID_partner=122'));
foreach ($oXML_cz->event as $event_cz)
{
      ......
}

检查的配置。更多提示可在中找到

解决方案是尝试卷曲:

function download_page($path){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$path);
    curl_setopt($ch, CURLOPT_FAILONERROR,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    $retValue = curl_exec($ch);          
    curl_close($ch);
    return $retValue;
}

$sXML = download_page('http://www.domain.com/file.xml');
$oXML_cz = new SimpleXMLElement($sXML);

foreach($oXML_cz->event as $event_cz)
{
   ...
}

谢谢你的回答;)

此库的错误没有很好的记录。问题可能是由于XML文件过大,而不是XML结构符合性/完整性

例如,一旦解析,15MB的文件可能会外推1GB,因此
ini_set('memory_limit','1024M')可能无效

在上述情况下,我通过在xml声明/加载期间包含
LIBXML\u
参数解决了这个问题

$xml = new SimpleXMLElement($contents, LIBXML_PARSEHUGE);

这不是问题,因为我正在从其他服务器加载XML文件,而且它正在工作……您在下面的评论中提到,您可以使用
file\u get\u contents
获取其他远程文件,这是一个重要的可能性。您还尝试了哪些其他步骤来调试此程序?例如,如果您回显
file\u get\u contents('http://www.ticketportal.cz/xml/temp/partnerall1.xml?ID_partner=122“)
,您是否获得了预期的XML?尝试运行此处发布的代码时,您收到的确切错误消息是什么?如果我回显,它将返回:[function.file get contents]:无法打开流:HTTP请求失败!啊哈!那么,这是一个重要的发现,不是吗?这意味着这与将其解析为XML无关,而与能够从服务器访问该URL有关。因此,可能值得尝试一些获取文件的替代方法(例如,CURL),看看它们是否至少会给您带来一个更具表现力的错误。另外,要明确的是,该消息不是
echo
的结果,甚至应该在您以前的代码中显示出来。您是否已确保您的邮件被捕获?是的,这有助于。。。我用卷发,现在一切都好了。谢谢你的帮助!