Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][xml] Parsowanie niepełnego xml, Optymalizacja transferu, aby nie pobierać całego pliku xml.
janlgorski
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.10.2012

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


Moim celem jest optymalizacja transferu na serwer. Muszę skanować w pewnych odstępach czasu dużą liczbę strumieni RSS (xml). Co pewien czas skrypt odwiedza strony, ściąga xml i próbuje zobaczyć, czy pojawiło się coś nowego. Niestety sam fakt pobrania całego pliku RSS nie musi oznaczać, że cokolwiek nowego doszło, a jeśli doszło, to zazwyczaj z pobranych 300kb potrzebuję jedynie pierwszych kilkanaście.

Po używaniu 'wyszukaj', doszedłem do wniosku, że potrzebny mi SAX parser, albo PULL parser. Wybór padł na XMLReader i file_get_contents. W file_get_contents precyzuję zakres znaków od 0 do X, ściągam ten kawałek i próbuję parsować niepoprawny plik xml, skacząc z elementu na element. Niestety, kończy się to komunikatem Extra content at the end of the document in.

Może można podejść do problemu inaczej? Sam nie wiem jak zachowuje się pobieranie zdalnego pliku jako 'strumień'? A może jest jeszcze inny sposób?

Być może poruszone przeze mnie zagadnienie jest już opracowane, ale ja sam nie mam takiej wiedzy. Spróbuję jednak zadać ciut inne pytanie. Otóż, co można wykorzystać do parsowania kawałka pliku XML, żeby wydobyć z niego pełne elementy, ignorując błędy?

SAX4PHP przy tej próbie wyrzuca błąd :

Cytat
SAXException >> [5]: Invalid document end at 1,4251


Mój pomysł polega na tym, żeby pociągnąć strumieniem fragment pliku XML(RSS feed) i sprawdzać go po kawałku. Jeśli okaże się, że przeczytany fragment jest już w bazie danych, skrypt przestanie dalej czytać ten plik, co zaoszczędzi transfer.
Go to the top of the page
+Quote Post

Posty w temacie


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: 20.08.2025 - 16:33