2012-01-01 30 views
11

Tôi đang cố gắng sử dụng SimpleXML để tải URL từ xa.Sử dụng SimpleXML để tải URL từ xa

Nếu tôi nhập vào trình duyệt của mình như sau;

http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.25)+Gecko/20111212+Firefox/3.6.25&customerSessionId=&xml=<HotelListRequest><arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup><Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren><childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode><supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest> 

Nó hoạt động!

Nếu tôi thử;

$url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.25)+Gecko/20111212+Firefox/3.6.25&customerSessionId=&xml=<HotelListRequest><arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup><Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren><childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode><supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest> '; 
$xml = simplexml_load_file($url); 

Tôi gặp phải lỗi sau;

Warning: simplexml_load_file() [function.simplexml-load-file]: http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerUserAgent=Mozilla/5.0%2B(Windows;%2BU;%2BWindows%2BNT%2B6.1;%2Ben-US;%2Brv:1.9.2.25)%2BGecko/20111212%2BFirefox/3.6.25&customerSessionId=&xml=%3CHotelListRequest%3E%3CarrivalDate%3E01/22/2012%3C/arrivalDate%3E%3CdepartureDate%3E01/24/2012%3C/departureDate%3E%3CRoomGroup%3E%3CRoom%3E%3CnumberOfAdults%3E1%3C/numberOfAdults%3E%3CnumberOfChildren%3E1%3C/numberOfChildren%3E%3CchildAges%3E4%3C/childAges%3E%3C/Room%3E%3C/RoomGroup%3E%3Ccity%3EAmsterdam%3C/city%3E%3CcountryCode%3ENL%3C/countryCode%3E%3CsupplierCacheTolerance%3EMED%3C/supplierCacheTolerance%3E%3C/HotelListRequest%3E%20:1: parser error : Start tag expected, '<' not found in C:\Program Files\XAMPP\xampplite\htdocs\hotel\results.php on line 29 

Phần đáng chú ý nhất của lỗi đó là: lỗi phân tích cú pháp: Bắt đầu từ khóa mong đợi, '<' không tìm thấy

Tôi muốn truy cập vào tập tin đó và sử dụng PHP/SimpleXML để định dạng kết quả - nhưng cho đến nay tôi bị mắc kẹt.

Tôi nghĩ rằng chủ đề này HERE mà nói về rawurlencode có thể đã giúp nhưng nó đã không, hoặc là hoặc tôi đang thiếu một cái gì đó.

Trả lời

30

Kết quả sẽ trở lại dưới dạng json. Thay thế simplexml_load_file bằng json_decode và bạn sẽ thấy một đối tượng phù hợp.

Nếu bạn muốn sử dụng xml, bạn cần chỉ định nó trong tiêu đề. Mã sau đây sẽ trả về giá trị xml:

$context = stream_context_create(array('http' => array('header' => 'Accept: application/xml'))); 
$url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?cid=55505&minorRev=12&apiKey=2hkhej72gxyas3ky6hhjtsga&locale=en_US&currencyCode=USD&customerIpAddress=10.184.2.9&customerSessionId=&xml=<HotelListRequest><arrivalDate>01/22/2012</arrivalDate><departureDate>01/24/2012</departureDate><RoomGroup><Room><numberOfAdults>1</numberOfAdults><numberOfChildren>1</numberOfChildren><childAges>4</childAges></Room></RoomGroup><city>Amsterdam</city><countryCode>NL</countryCode><supplierCacheTolerance>MED</supplierCacheTolerance></HotelListRequest> '; 

$xml = file_get_contents($url, false, $context); 
$xml = simplexml_load_string($xml); 
print_r($xml); 
?> 
+0

Cảm ơn dường như trả về mảng nhưng bạn có thể cho tôi biết URL đó làm cho JSON giống như XML cho tôi và cũng là ví dụ làm việc với dữ liệu được trả lại từ trên; tức là echo $ xml-> hotelId [1]; hoặc một cái gì đó tương tự? Cảm ơn bạn đã giúp đỡ. – Wordpressing

+1

Url không chỉ định mã hóa - tiêu đề Chấp nhận của nó là liều. Ví dụ của bạn là khá nhiều trên trac đúng, nhưng bạn nên sử dụng một câu hỏi riêng cho phần đối tượng $ XML. Xin đừng quên chấp nhận! – Mbrevda

+0

Ok điều đó có ý nghĩa hơn với tôi bây giờ, cảm ơn sự giúp đỡ của bạn! – Wordpressing

Các vấn đề liên quan