Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Parsowanie XML w wzorcu obserwatora
Forum PHP.pl > Forum > PHP > Object-oriented programming
filipsiu
Robię parser logów xml w wzorcu obserwatora(pierwszy raz, nie wiem czy dobrze to kminie).
Kod: http://pastebin.com/qyJPsxxA

Jak teraz dalej to pociągnąć? Informuję obserwatorów o kolejnym pojedynczym logu xmla, rozumiem, że obserwatorzy mają je przetworzyć tak?

Chciałbym, żeby na końcu programu wypisało mi z tych 3 obserwatorów coś takiego:

- Listener, który na zakończenie programu wyświetli zestawienie liczby błedów o danym poziomie, np.
ERROR - 120
WARNING - 763
INFO - 1567
DEBUG - 2300
TRACE - 19923
- Listener, który na zakończenie wyświetli TOP 5 najczęściej występujących kodów błędów, np.
kod 187 - 67
kod 111 - 51
kod 123 - 7
kod 149 - 5
kod 160 - 5
- Listener, który na zakończenie wyświetli TOP 5 najczęściej występujących plików, np.
plik pl/wp/entity/User.java - 67
plik pl/wp/entity/CV.java - 51
plik pl/wp/dao/Department.java - 7
plik pl/wp/service/CV.java - 5
plik pl/wp/queue/CV.java - 5
adbacz
Ogólnie jest ok, naprowadzenie na ścieżkę dla Ciebie poniżej smile.gif

1. Zrób obiekt Storage, który będzie przechowywał kod z pliku XML, jedną linijkę kodu XML czy cokolwiek tam potrzebujesz.
2. W każdej iteracji, wstrzyknij ten Storage do listenera jako argument.
3. Zrób obiekt Output, który będzie przechowywał dane, które będą miały być wyświetlone na wyjściu programu.
4. I teraz dwie opcje do wyboru: albo wstrzyknij ten obiekt Output do konstruktora Listenera, albo wstrzykuj do metody update() każdego listenera. Jak Ci będzie wygodniej.
5. Na samym końcu wyświetl resultat z Output. Listener powinien tylko wstawić treść do Output'a, a nie formatować go. Do formatowania resultatu zrób sobie inną klasę.

Resztę już zostaw dla Listenerów. To one powinny wiedzieć na których danych chcą operować, i w jaki sposób.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.