Pobieranie danych z pliku XML za pomocą php

Do pobierania danych z plików XML, php przygotowało bardzo wygodną i prostą w użyciu funkcję simplexml_load_file();, której argumentem jest ścieżka do pliku XML. Wykonując ją w pętli foreach można przetworzyć cały plik wykorzystując zaledwie 4 linijki kodu. Niemal bliźniaczą funkcją jest funkcja simplexml_load_string();, której argumentem jest zawartość pliku xml trzeba zatem pobrać zawartość pliku funkcją file_get_contents();, której argumentem będzie ścieżka do pliku XML.

Tym sposobem po długim wstępie pierwsze rozwiązanie, wymagające jedynie 4 linii kodu. Do przykładu wykorzystam plik XML z poprzedniego wpisu.

$xml = simplexml_load_file('waluty.xml');
foreach($xml->kraj as $kraj) {
	echo '<b>'.$kraj->panstwo.'</b><br/>'.$kraj->kurs.' '.$kraj->waluta.' dnia: '.$kraj->notowanie.'<br/>';
}

Struktura XML wygląda mniej więcej tak waluty->kraj->panstwo,waluta,kurs,notowanie. W taki też sposób odczytuje kolejne obiekty (dzieci) danych. przy czym pętla foreach przypisuje wartość obiektu $xml->kraj do zmiennej $kraj. Dlatego później pomijane jest jedno dziecko.

Ten sam przykład z wykorzystaniem funkcji simplexml_load_string();

$xml = file_get_contents('waluty.xml');
$xml = simplexml_load_string($xml);
foreach($xml->kraj as $kraj) {
	echo '<b>'.$kraj->panstwo.'</b><br/>'.$kraj->kurs.' '.$kraj->waluta.' dnia: '.$kraj->notowanie.'<br/>';
}

Odczytywanie obiektów jest identyczne jak wyżej, natomiast demo (tylko pierwszego rozwiązania) znajduje się pod tym linkiem.

Jak wspomniałem we wcześniejszym wpisie sklepy, programy partnerskie, i tym podobne serwisy udostępniają użytkownikom dane w postaci pliku XML. Przykładem jest Facebook, czy Vimeo, który udostępnia miniaturki filmów w pliku XML.

Przykładowy kod pobierający miniaturkę filmu z Vimeo

	$url = parse_url('http://vimeo.com/64310817', PHP_URL_PATH);
	$xml = @simplexml_load_file("http://vimeo.com/api/v2/video".$url.".xml");
	echo '<img src="'.$xml->video->thumbnail_medium.'" />';