Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pobieranie danych z xmla
Forum PHP.pl > Forum > Przedszkole
gofer
witam, jak pobrać dane, które są na innej stronie prezentowane w postaci xml i wyświetlić je na swojej stronie?
hwao
Otwierasz plik i lapiesz jego zawartosc, jak sie nie da to fsockopen" title="Zobacz w manualu PHP" target="_manual()

Nastepnie wyrazenia regularne i lapiesz co Ci potrzebne, a jak calosc to jakas klasa/bibliotek do przetwarzania xml'a do tablicy/obietku i wyswietlasz jak Ci trzeba
chipcio
Można utworzyć praser XML. Oto kod:

  1. <?
  2. function start($parser, $element, $atrybuty) {
  3. global $drzewo;
  4. $drzewo .= &#092;"/$element\";
  5. }
  6.  
  7. function koniec($parser, $element) {
  8. global $drzewo;
  9. $drzewo = substr($drzewo,0,strrpos($drzewo,&#092;"/\"));
  10. }
  11.  
  12. function dane($parser, $zawartosc) {
  13. global $drzewo, $elementy;
  14. $elementy[&#092;"$drzewo\"][]= $zawartosc;
  15. }
  16.  
  17. $plik = &#092;"plik.xml\";
  18. $parser = xml_parser_create();
  19. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
  20. xml_set_element_handler($parser, &#092;"start\", \"koniec\");
  21. xml_set_character_data_handler($parser, &#092;"dane\");
  22.  
  23. if ($f = fopen($plik, &#092;"r\")) {
  24. while ($dane = fread($f, 4096)) {
  25. if (!xml_parse($parser, $dane, feof($f))) {
  26. echo sprintf(&#092;"<b>Błąd w pliku XML: %s w lini %d\",
  27. xml_error_string(xml_get_error_code($parser)),
  28. xml_get_current_line_number($parser),&#092;"</b>\");
  29. }
  30. }
  31. } else { echo &#092;"Nie można otworzyć pliku!\"; }
  32. xml_parser_free($parser);
  33.  
  34.  
  35. // wypisanie tytułu
  36. echo &#092;"<a href=\"{$elementy[\"/rss/channel/link\"][0]}\"
  37. >{$elementy[&#092;"/rss/channel/title\"][0]}</a>
  38. <br />{$elementy[&#092;"/rss/channel/description\"][0]}<br />\";
  39.  
  40. // pokazanie grafiki
  41. if ($elementy[&#092;"/rss/channel/image/width\"][0]>0) 
  42. $szerokosc=&#092;"width={$elementy[\"/rss/channel/image/width\"][0]}\";
  43. if ($elementy[&#092;"/rss/channel/image/height\"][0]>0) 
  44. $wysokosc=&#092;"height={$elementy[\"/rss/channel/image/height\"][0]}\";
  45. if ($elementy[&#092;"/rss/channel/image/link\"][0]<>\"\") {
  46. echo &#092;"<a href=\"{$elementy[\"/rss/channel/image/link\"][0]}\" 
  47. title=&#092;"{$elementy[\"/rss/channel/image/title\"][0]}\"><img 
  48. src=&#092;"{$elementy[\"/rss/channel/image/url\"][0]}\" 
  49. border=&#092;"0\" $szerokosc $wysokosc 
  50. alt=&#092;"{$elementy[\"/rss/channel/image/description\"][0]}\"></a><br />\";
  51. }
  52.  
  53. // wypisanie nagłówków
  54. for ($i=0;$i<count($elementy[&#092;"/rss/channel/item/title\"]);$i++) {
  55. echo &#092;"<p>• <a href=\"{$elementy[\"/rss/channel/item/link\"][$i]}\"
  56. >{$elementy[&#092;"/rss/channel/item/title\"][$i]}</a>\";
  57. if ($elementy[&#092;"/rss/channel/item/description\"][$i]<>\"\") 
  58. echo &#092;"<br />{$elementy[\"/rss/channel/item/description\"][$i]}\";
  59. }
  60.  
  61. ?>


w zmiennej $plik dajesz stronę z plikiem XML

---
Prosze uzywac [php] do umieszczania kodu php
hwao
tmk
w powyższym parserze jest problem z cudzysłowami. gdy pojawią się w <title></title> źle parsuje.

Ma ktoś pomysł jak to zmodyfikować?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.