 
 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) | ||
|---|---|---|
| Code | Expected | Actual | 
| 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 |