Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czytanie pliku XML, Niechce żadnej klasy!!!
akurczyk
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
batman
post
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.
Go to the top of the page
+Quote Post
bigZbig
post
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
Go to the top of the page
+Quote Post
akurczyk
post
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.
Go to the top of the page
+Quote Post
batman
post
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.
Go to the top of the page
+Quote Post
mike
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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.
Go to the top of the page
+Quote Post
Riklaunim
post
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.
Go to the top of the page
+Quote Post
akurczyk
post
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
Go to the top of the page
+Quote Post
mike
post
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
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.
Go to the top of the page
+Quote Post
akurczyk
post
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ć
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) daty rejestracji 2003 - 2005 (IMG:http://forum.php.pl/style_emoticons/default/thumbsupsmileyanim.gif)

Ten post edytował phpion 24.10.2008, 13:40:59
Go to the top of the page
+Quote Post
johnson
post
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
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/
Go to the top of the page
+Quote Post
akurczyk
post
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
Go to the top of the page
+Quote Post
phpion
post
Post #17





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
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.

(IMG:http://forum.php.pl/style_emoticons/default/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
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. ?>
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 Aktualny czas: 22.08.2025 - 13:15