This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.

Extracting Data While Parsing a Document (written by Rod Gaither)
CodeExpectedActual
event_xml = %{
<events>
  <clean system="dev" start="01:35" end="01:55" area="build" error="1" />
  <backup system="prod" start="02:00" end="02:35" size="2300134" error="0" />
  <backup system="dev" start="02:00" end="02:01" size="0" error="2" />
  <backup system="test" start="02:00" end="02:47" size="327450" error="0" />
</events>}
require 'rexml/document'
require 'rexml/streamlistener'
class ErrorListener
  include REXML::StreamListener
  def tag_start(name, attrs)
    if attrs["error"] != nil and attrs["error"] != "0"
      puts %{Event "#{name}" failed for system "#{attrs["system"]}" } +
	%{with code #{attrs["error"]}}
    end
  end
end
REXML::Document.parse_stream(event_xml, ErrorListener.new)
Event "clean" failed for system "dev" with code 1
Event "backup" failed for system "dev" with code 2
Event "clean" failed for system "dev" with code 1
Event "backup" failed for system "dev" with code 2