빠르게 자신에 여기에 무슨 (방법과 해결책을 찾기 위해) 무엇을 찾아 방지 코드를 가진 두 개의 작은 (그러나 공통) 실수가 있습니다.
우선 오류 검사는 수행하지 않습니다. simplexml_load_file()
은 파일을 열지 못할 경우를 대비하여 FALSE
을 반환합니다.
$xml = simplexml_load_file($url);
if (!$xml) {
// error opening the URL
return false;
}
이 아직 매우 유익하지 않습니다, 당신은 지금 막 실제로 오류가 생성되는 볼 PHP 오류보고/로깅을 사용할 수 있습니다 :
경고 : simplexml_load_file() : HTTP : // 데이터 센터. biathlonresults.com/modules/sportapi/api/CupResults?CupId=BT1415SWRLCP__SMTS:1가 : 파서 오류 : 태그 예상, '<'에서 찾을 수 없습니다 시작 [...]
경고 : simplexml_load_file() : { "AsOf" : "2014-12-22T11 : 45 : 50.5976703 + 00 : 00", "RaceCount": 25, "Rows": [{ "Rank": " 1 ","[...]
경고 : simplexml_load_file() : ^에 [...] 이미 URL로 HTTP 요청을 XML하지만 JSON을 (제공하지 않는 신호
두 번째 경고 참조). 쉽게
여기에 XML을 허용하도록 서버를 말하는 의해 유효성을 검사 :
지금 바로 작동 whcih
stream_context_set_default(['http' => ['header' => "Accept: text/xml"]]);
$xml = simplexml_load_file($url);
, 서버가 올바르게 구문 분석 할 수있는 XML 및 생성 된 SimpleXMLElement을 제공합니다.
전체 코드 예 :
<?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>[...]
이 코드 예는 동일한 지상 커버 the answer of a very similar question 짧은 버전이
이 동작은 ASP.NET, 대부분 REST API 구성 요소를 실행하는 Microsoft-IIS Server에서 일반적인 것처럼 보입니다.
그건 파일이 아닙니다. URL입니다. –
당신 말이 맞아요, 내가 URL과 함께 뭔가 될 줄 알았지 만,이 URL은 XML 출력을 생성하지, 안 그래? 결과를 얻는 방법에 대해 조언 해 주시겠습니까? –
@MichalSlesingr : PHP 오류보고 및 로깅을 활성화하십시오. 그런 다음 실제 오류 메시지를 살펴보십시오. 또한 [PHP에서 유용한 오류 메시지를 얻는 방법]을 참조하십시오. (http://stackoverflow.com/q/845021/367456) – hakre