Class: Risu::Parsers::Nessus::NessusSaxListener

Inherits:
Object
  • Object
show all
Includes:
LibXML::XML::SaxParser::Callbacks
Defined in:
lib/risu/parsers/nessus/nessus_sax_listener.rb

Overview

NessusSaxListener

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNessusSaxListener

vals tracks state for elements encountered during parsing



155
156
157
158
# File 'lib/risu/parsers/nessus/nessus_sax_listener.rb', line 155

def initialize
  @vals = Hash.new
  @new_tags = Array.new
end

Instance Attribute Details

#new_tagsObject

Returns the value of attribute new_tags.



34
35
36
# File 'lib/risu/parsers/nessus/nessus_sax_listener.rb', line 34

def new_tags
  @new_tags
end

Instance Method Details

#on_characters(text) ⇒ Object

Called when the inner text of a element is reached

Parameters:

  • text


182
183
184
185
186
187
188
# File 'lib/risu/parsers/nessus/nessus_sax_listener.rb', line 182

def on_characters(text)
  if @vals[@tag] == nil then
    @vals[@tag] = text
  else
    @vals[@tag] << text
  end
end

#on_end_element(element) ⇒ Object

Called when the end of the XML element is reached

Parameters:

  • element


193
194
195
196
197
198
199
200
201
202
203
# File 'lib/risu/parsers/nessus/nessus_sax_listener.rb', line 193

def on_end_element(element)
  @tag = nil

  if DYNAMIC_END_METHOD_NAMES.key?(element)
    # Dynamic dispatch to private instance methods in the const hash
    #   DYNAMIC_END_METHOD_NAMES where {"element" => :end_element}
    send(DYNAMIC_END_METHOD_NAMES[element], element)
  elsif VALID_REFERENCES.include?(element)
    end_valid_reference(element)
  end
end

#on_start_element(element, attributes) ⇒ Object

Callback for when the start of a XML element is reached

Parameters:

  • element

    XML element

  • attributes

    Attributes for the XML element



164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/risu/parsers/nessus/nessus_sax_listener.rb', line 164

def on_start_element(element, attributes)
  @tag = element
  @vals[@tag] = ""

  if !VALID_ELEMENTS.include?(element)
    @new_tags << "New XML element detected: #{element}. Please report this at #{Risu::GITHUB}/issues/new or via email to #{Risu::EMAIL}"
  end

  if DYNAMIC_START_METHOD_NAMES.key?(element)
    # Dynamic dispatch to private instance "policyComments"methods in the const hash
    #   DYNAMIC_START_METHOD_NAMES where {"element" => :start_element}
    send(DYNAMIC_START_METHOD_NAMES[element], element, attributes)
  end
end