11.3. Ekstrakcja informacji w trakcie analizy dokumentu XML

Podziękowania dla Roda Gaithera

Problem

Chcielibyśmy przetworzyć duży dokument XML bez potrzeby ładowania jego zawartości w całości do pamięci.

Rozwiązanie

Metoda REXML::Document.parse_stream umożliwia szybkie i elastyczne skanowanie dużego dokumentu połączone z przetwarzaniem jego interesujących fragmentów.

Spójrzmy na poniższy dokument, stanowiący raport z działania hipotetycznego programu („demona”) uruchamiającego w sposób automatyczny różne zadania. Chcielibyśmy wydobyć z tego raportu informację o tych zadaniach, które zakończyły się niepowodzeniem (czyli te, dla których zwrócony kod error jest różny od 0).

event_xml = %{ <events> <clean system="dev" start="01:35" end="01:55" ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.