Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][PHP]jak trudna przeróbka z simplexml na dom?
adek-
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Zbadaj coś takiego
http://www.phpclasses.org/package/4484-PHP...-extension.html
Go to the top of the page
+Quote Post
adek-
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował adek- 3.08.2011, 10:29:24
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Weź poczytaj o DOM, to jest banalne do zrobienia. Nie ma sensu bawić się w dodatkowe klasy.
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
adek-
post
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


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! (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:21