Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]jak trudna przeróbka z simplexml na dom?
Forum PHP.pl > Forum > Przedszkole
adek-
Witam, od początku przytrafił mi się parser simplexml i takiego obsługuję, niestety na serwerze na którym mam stronę jest php 4 i nie mają skompilowanej biblioteki simplexml. Niestety niby nie mogą mi dokompilować tej biblioteki, a mają zaimplementowanego doma. Moje pytanie brzmi czy dużo pracy jest z przekompilowaniem takiego krótkiego kodu?

  1. $data = simplexml_load_file('lokalne/pliki.xml');
  2.  
  3. foreach($data -> tabela as $tabela){
  4. foreach($tabela -> item as $item){
  5. if ($i % 2 == 1) $style="row1"; else $style="row2";
  6. echo "<tr class=$style>";
  7. echo "<td height=\"20\"><img src=\"".$item['imgsrc']."\" class=\"img\"><b>&nbsp;" .$item. "</b></td>";
  8. echo "<td align=\"center\">".$item['symbol']."</td>";
  9. //echo "&nbsp;<img src=\"".$item['imgsrc']."\">&nbsp;";
  10. //echo "&nbsp;".$item['jednostka']."&nbsp;";
  11. echo "<td align=\"center\"><b>".($item['kupno'] / $item['jednostka'])."</b></td>";
  12. echo "<td align=\"center\"><b>".($item['sprzedaz'] / $item['jednostka'])."</b></td></tr>";
  13. $i++;
  14. }
  15. }
skowron-line
Zbadaj coś takiego
http://www.phpclasses.org/package/4484-PHP...-extension.html
adek-
Hmm ucieszyłem się bardzo jak zobaczyłem coś takiego, bo już zaczynałem obczytywać się w cURL i zapoznawać jako tako. Niestety, po dwóch godzinach z tą klasą i niemocą z uruchomieniem jej uśmiech mój nieco spadł. Źle to chyba interpretuje bo próbuje to użyć w ten sposób.
  1. require_once "lokalne/simplexml.class.php";
  2.  
  3. echo "<pre>";
  4. $file = "lokalne/CZW-m1.xml";
  5. $sxml = new simplexml;
  6. $data = $sxml->xml_load_file($file);
  7. //print_r($data);
  8. // $data = simplexml_load_file('lokalne/plik.xml');
  9.  
  10. foreach($data -> tabela as $tabela){
  11. foreach($tabela -> item as $item){
  12. if ($i % 2 == 1) $style="row1"; else $style="row2";
  13. echo "<tr class=$style>";
  14. echo "<td height=\"20\"><img src=\"".$item['imgsrc']."\" class=\"img\"><b>&nbsp;" .$item. "</b></td>";
  15. echo "<td align=\"center\">".$item['symbol']."</td>";
  16. //echo "&nbsp;<img src=\"".$item['imgsrc']."\">&nbsp;";
  17. //echo "&nbsp;".$item['jednostka']."&nbsp;";
  18. echo "<td align=\"center\"><b>".($item['kupno'] / $item['jednostka'])."</b></td>";
  19. echo "<td align=\"center\"><b>".($item['sprzedaz'] / $item['jednostka'])."</b></td></tr>";
  20. $i++;
  21. }
  22. }
  23. echo "</table>";
  24. echo "</pre>";

print_r($data) wyświetla mi prawidłowo arraya, więc wiem, że na pewno ta klasa działa, przypuszczam więc, że teraz źle foreach jest ułożony, ale patrząc na to co napisane jest w "howto".
  1. PHP4 doesnt support inner object functions. This is what i mean :
  2.  
  3. When you try :
  4.  
  5. $value = $item->key1->attributes()->name;
  6.  
  7. it won't work. So use this:
  8.  
  9. $var = $item->key1->attributes();
  10. $value = $var->name;
  11.  
  12. this will work.


ja mam proste $data -> tabela as $tabela i poniżej $tabela -> item as $item co chyba powinno działać bo foreach to foreach, chyba?, ale spróbowałem parę sposobów wyświetlania tego inp:
  1. $var = $data->tabela;
  2. $value = $var->item;
  3. foreach($var as $tabela){
  4. foreach($value as $item){
  5. if ($i % 2 == 1) $style="row1"; else $style="row2";
  6. echo "<tr class=$style>";
  7. ..........

wyrzuca mi x wersetów
  1. <td height="20"><img src="" class="img"><b>&nbsp;Object</b></td>



------------ Edytowano 11:25 dnia 03.08.2011
W między czasie wykombinowalem tak, że wysyłam plik na inny serwer z php5 i simple xml, a na tym serwerze daje include. Skrypt się wykonuje i daje wynik poprawnie. Niestety działają tylko opcje wyświetlania, jeśli zadam jakąś akcję POST lub GET to nie idzie, próbuję teraz z cURL, ale mam problemy z headerami ;/ Wolał bym jednak uruchomić podaną przez Ciebie klasę, nie było by zamieszania z 2 serwerami.
webdice
Weź poczytaj o DOM, to jest banalne do zrobienia. Nie ma sensu bawić się w dodatkowe klasy.
Fifi209
Jeżeli nie masz php5 na serwerze, to albo włącz (zwykle się da) albo zmień serwer, większość obiektówki weszło w php5.
adek-
Temat rozwiązany, całkowicie wyemigrowałem na inny serwer, zostawiam klasy, kopiowanie po innych serwerach gdzie wykonywałem skrypt i DOM w spokoju. Temat zamknięty, ale warto było dowiedzieć się o tym, że można zrobić klasę SimpleXML na php4! smile.gif
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.