![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
w zasadzie to moje początki z XMLem. Dziś spędziłem mnóstwo czasu nad tym, żeby sczytać dane z pliku XML - wiem, niby banalne, ale wciąż miałęm jakieś błędy. Udało mi się odpowiednie odczytać plik xml i wyciągnąć z jego dane za pomocą:
Znalazłem to zresztą gdzieś tutaj na forum (przejrzałem tylko podstron, że nie pamiętam gdzie dokłądnie). Mam jednak problem: plik XML jest duży ok 4 MB, i w momencie, kiedy pokazuję choćby 5 rekordów na stronie, czas ładowania strony zwiększa się o ok 10 sekund. Czy mogę jakoś odczytywać plik xml częściami? Sprawdzałem manual do funkcji simplexml_load_file, jednak nic nie znalazłem. Nie wiem czy istnieje w ogóle taka możliwość, stąd mój post tutaj na forum. Za wszelkie sugestie będę wdzięczny. Pozdrawiam PS) Właśnie pomyślałem, że mógłbym ominąć powyższy problem, jeśli potrafiłbym zrobić rzecz następującą: załóżmy, że w moim pliku XML jest rekord o tagu <data>01.01.2008 12.23</data>. Poza tym plik xml ma sto tysięcy innych danych, które teraz mnie nie interesują. Czy mogę bez ładowania całego pliku - simplexml_load_file("plik.xml") - odczytać konkretny rekord, w tym przypadku data? Może powinienem się zainteresować innym parserem, nie simpleXML a może DOM. Czy to rozwiązałoby problem? Ten post edytował AoW 14.11.2008, 14:30:09 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 2 Dołączył: 3.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Możesz przeczytać część pliku np. funkcją fgets" title="Zobacz w manualu PHP" target="_manual a później użyć simplexml_ load_ string" title="Zobacz w manualu PHP" target="_manual. Może być problem jeśli chciałbyś się dostać do środka lub końca pliku, ale takie już są "zalety" plików tekstowych.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy do tego że to co chcesz zrobić będzie bardzo wolne gdyż operowanie na plikach XML do szybkich nie należy. I teraz są 2 rozwiązania. Pierwsze - masz to gdzieś i bawisz się dalej XML, a jeżeli chcesz wyciągać jakieś konkretne dane z pliku XML to polecam zainteresować się XPath, polecam mój artykuł - link w stopce. Drugie rozwiązanie to zrobić cache tego pliku do tablicy php i operować sobie normalnie na tablicach.
Krótko odpowiadając na Twoje pytanie: Cytat Czy mogę bez ładowania całego pliku - simplexml_load_file("plik.xml") - odczytać konkretny rekord, w tym przypadku data? Może powinienem się zainteresować innym parserem, nie simpleXML a może DOM. Czy to rozwiązałoby problem? Tak, użyj XPath - http://pl.php.net/manual/pl/function.simpl...ement-xpath.php -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam ja mam podobny problem, ja chciałbym odczytać pierwszą sekcję <item> a nie wiem jak to zrobić. Część pliku xml wklejam poniżej i mój wyduszony kod i jego efekt
Plik XML:
To co narazie mi się udało zrobić w PHP:
I poniżej efekt skryptu PHP: Kod Promocja dnia: Excel 2007 PL. Seria praktyk Nowość: Kompendium DTP. Adobe Photoshop, Illustrator, InDesign i Acrobat w praktyce Nowość: Excel 2007 PL. Seria praktyk Nowość: Photoshop CS3 PL. Seria praktyk Nowość: Access 2007 PL. Seria praktyk Nowość: PowerPoint 2007 PL. Seria praktyk Nowość: Windows Vista PL. Seria praktyk Nowość: Word 2007 PL. Seria praktyk Nowość: Fotografia cyfrowa dla bystrzaków. Wydanie V Nowość: Microsoft Project 2007 PL. Nieoficjalny podręcznik Nowość: Head First SQL. Edycja polska A ja chciałbym żeby się wyświetliła tylko pierwsza linijka tzn: Kod Promocja dnia: Excel 2007 PL. Seria praktyk EDIT: no poradziłem sobie sam tak jak lubię ![]()
Ten post edytował pkwiatkowski 29.04.2009, 17:54:28 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:51 |