Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czytanie pliku XML, Niechce żadnej klasy!!!
akurczyk
post 24.10.2008, 09:45:18
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Potrzebuję przeczytać plik XML (jak bazę danych) z poziomu PHP.
Wiem że można pobrać SAXa ale nie chcę żadnych klas, i proszę nie robić offtopa dlaczego, porostu nie.

Plik XML:
Kod
<newsy>
     <news>
         <tytul>Drug news</tytul>
         <tresc>Treść drugiego newsa</tresc>
         <dodane>11-11-2011 11:11:11</dodane>
     </news>
     <news>
          <tytul>Pierwszy news</tytul>
          <tresc>Treść pierwszego newsa</tresc>
          <dodane>10-10-2010 10:10:10</dodane>
      </news>
</newsy>


Chcę te newsy wyświetlić jak dane z bazy.

Ten post edytował akurczyk 24.10.2008, 09:47:22


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
batman
post 24.10.2008, 09:49:16
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Jak to sobie wyobrażasz, że "czytasz" plik XML bez żadnej biblioteki? Jedyne co możesz zrobić, to wyświetlić te dane w przeglądarce przy użyciu transformacji XSLT.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
bigZbig
post 24.10.2008, 09:55:14
Post #3





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Najprościej zrobisz to używając SimpleXml. Wszelkie inne rozwiązania to niepotrzebne kombinowanie


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
akurczyk
post 24.10.2008, 10:13:50
Post #4





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


chodziło mi o napisanie parsera wyświetlającego te dane.
a funkcje xml_parse() itp?
podobny przypadek wszyscy piszą że do parsowania szablonu potrzebne są klasy, a ja jakoś rozwiązałem to nie obiektowy, w 3 linijkach.


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
batman
post 24.10.2008, 10:27:24
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Czyli chcesz wymyślić od nowa koło. Po tą są gotowe biblioteki, by z nich korzystać. Jestem pewien, że Twój parser będzie wolniejszy i miał mniejsze możliwości od tych, które są wbudowane w PHP.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
mike
post 24.10.2008, 10:35:23
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(bigZbig @ 24.10.2008, 10:55:14 ) *
Najprościej zrobisz to używając SimpleXml. Wszelkie inne rozwiązania to niepotrzebne kombinowanie
Bzdura!
SimpleXML to jedno z rozwiązań, nie lepsze i nie gorsze od innych. Po prostu dedykowane do pewnych potrzeb.
Chętnie zobaczę jak czytasz za pomocą SimpleXML plik 50MB tongue.gif Wtedy najzwyklej najlepszym rozwiązaniem jest XMLReader.

Wszystkie biblioteki mają plusy i minusy i nie ma lepszych i gorszych. Dobiera się je do aktualnych potrzeb.
Go to the top of the page
+Quote Post
akurczyk
post 24.10.2008, 13:06:48
Post #7





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Potrzebuję parser konkretnie do newsów z tego pliku XML, a nie uniwersalnego molocha.
Ni wynajduję koła na nowo tylko robię konkurencyjne bardziej okrągłe koło jak iPhone i Omnia.


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
Riklaunim
post 24.10.2008, 13:19:44
Post #8





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(akurczyk @ 24.10.2008, 14:06:48 ) *
Potrzebuję parser konkretnie do newsów z tego pliku XML, a nie uniwersalnego molocha.
Ni wynajduję koła na nowo tylko robię konkurencyjne bardziej okrągłe koło jak iPhone i Omnia.


Jakiego molocha. W PHP5 masz dwie możliwości czytania XML i najprostszy to SimpleXML. Oba rozszerzenia to binarne elementy PHP i są bardzo wydajne.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
akurczyk
post 24.10.2008, 13:24:57
Post #9





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


ale żeby zastosować biny musiał bym być adminem serwa.
więc pozostają gotowe klasy których niech.
w takim wypadku muszę napisać coś wlanego minimalistycznego tylko do obsługi tych newsów XML.

Ten post edytował akurczyk 24.10.2008, 13:26:19


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
mike
post 24.10.2008, 13:28:09
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(akurczyk @ 24.10.2008, 14:24:57 ) *
ale żeby zastosować biny musiał bym być adminem serwa
A może zamiast chrznic niestworzone głupoty to spróbuj?
Żeby skorzystać z echo też musisz być adminem?
Go to the top of the page
+Quote Post
dr_bonzo
post 24.10.2008, 13:33:12
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Dzizez, chcesz pisac to pisz, SAM!
Masz rozdzial w manualu do operacji na funkcjach tekstowych, wyrazenia regularne, czytaj, pisz i pochwal sie.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
akurczyk
post 24.10.2008, 13:37:58
Post #12





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


żeby skorzystać z echo muszę mieć konto na serwerze z php.
czyli że te biblioteki są już zainstalowane?
to jak je używać


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
phpion
post 24.10.2008, 13:39:05
Post #13





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(akurczyk @ 24.10.2008, 14:24:57 ) *
muszę napisać coś wlanego minimalistycznego tylko do obsługi tych newsów XML.

W takim razie napisz to, a nie nawijaj, że musisz to napisać.

Swoją drogą: zauważ, iż osoby piszące w tym topicu mają "troszkę" więcej doświadczenia w programowaniu w PHP niż ty. Skoro więc sugerują ci inne rozwiązanie niż twoje to może coś w tym jest?

PS: aż się dziwię, że gość nie ma jeszcze ani jednego warna - poziom jego postów i podejście do problemów jest wręcz żenujące...

PS2: zauważyłem, że w tym temacie wypowiada się w zasadzie stara gwardia smile.gif daty rejestracji 2003 - 2005 thumbsupsmileyanim.gif

Ten post edytował phpion 24.10.2008, 13:40:59
Go to the top of the page
+Quote Post
johnson
post 24.10.2008, 13:48:19
Post #14





Grupa: Zarejestrowani
Postów: 90
Pomógł: 2
Dołączył: 3.12.2004

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


  1. <?php
  2. function readnews($filename)
  3. {
  4.  
  5. // czytanie pliku
  6. $xml_string = join('', file($filename));
  7.  
  8. // usuniecie znaków końca linii z całego pliku (tak, aby powstał jednolity ciąg)
  9. $order = array("r\n", "\n", "r");
  10. $replace = '';
  11. $xml_string = str_replace($order, $replace, $xml_string);
  12.  
  13. // podzielenie na części
  14. $pieces = explode('</news>', $xml_string);
  15.  
  16. // parsowanie i umieszczenie danych w tablicy asocjacyjnej
  17. $data = Array();
  18. foreach ($pieces as $value)
  19. {
  20.   if (eregi("<tytul>([^<]*)</tytul>[^<]*<tresc>([^<]*)</tresc>[^<]*<dodane>([^<]*)</dodane>", $value, $out))
  21.   {
  22.      $news = Array();
  23.      $news["tytul"] = $out[1];
  24.      $news["tresc"] = $out[2];
  25.      $news["dodane"] = $out[3];
  26.      $data[] = $news;
  27.   }
  28. }
  29. return $data;
  30. }
  31.  
  32. $data = readnews('news.xml');
  33. ?>


Nie jest to może najlepsze rozwiązanie, ale chyba takie o jakie chodziło. Nie wiem czy działa, bo nie testowałem, jeśli będą jakieś błędy to powinieneś sobie poradzić.
Go to the top of the page
+Quote Post
Riklaunim
post 24.10.2008, 13:54:43
Post #15





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(akurczyk @ 24.10.2008, 14:37:58 ) *
żeby skorzystać z echo muszę mieć konto na serwerze z php.
czyli że te biblioteki są już zainstalowane?
to jak je używać


Zadajesz w pierwszy poście pytanie, a chyba zupełnie nie masz pojęcia o PHPie i serwerach (i o "własnym hostingu"?). Na początek skończ gimnazjum, po tym poczytaj trochę o XHTML/CSS, po czym zabrać się możesz za języki dynamiczne.

SimpleXML jest częścią PHP5 i nie trzeba niczego instalować, czy kombinować jak koń pod górę.
http://pl2.php.net/manual/en/simplexml.examples.php
http://www.php.rk.edu.pl/w/p/simplexml/


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
akurczyk
post 24.10.2008, 15:03:50
Post #16





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


myślałem ze sxml to klasa jak bbcode czy paginatory.

temat do zamknięcia lub usunięcia

dzięki za pomoc


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
phpion
post 24.10.2008, 15:25:23
Post #17





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(akurczyk @ 24.10.2008, 16:03:50 ) *
myślałem ze sxml to klasa jak bbcode czy paginatory.

sciana.gif Nie mogłeś wcześniej sprawdzić zamiast się mądrzyć?

Cytat(akurczyk @ 24.10.2008, 16:03:50 ) *
temat do zamknięcia lub usunięcia

Na szczęscie o tym nie decydujesz ty tylko moderatorzy.

@Moderacja:
Przepraszam za OT.
Go to the top of the page
+Quote Post
akurczyk
post 24.10.2008, 15:58:30
Post #18





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Faktycznie głupio zrobiłem że tego nie sprawdziłem.
A temat jest do zamknięcia lub usunięcia bo problem jest już rozwiązany.
  1. <?php
  2. $plik = simplexml_load_file("newsy.xml");
  3. foreach($plik as $wartosc) {
  4.    echo "Tytuł: {$wartosc->tytul}<br>";
  5.    echo "Treść: {$wartosc->tresc}<br>";
  6. }
  7. ?>


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 15:40