Module: HQ::Tools::LibXmlRuby

Defined in:
lib/hq/tools/libxml-ruby.rb

Instance Method Summary collapse

Instance Method Details

#xml_to_data(elem0) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/hq/tools/libxml-ruby.rb', line 6

def xml_to_data elem0

  case elem0.name

  when "boolean"
    return elem0.attributes["value"] == "yes"

  when "string"
    return elem0.attributes["value"]

  when "integer"
    return elem0.attributes["value"].to_i

  when "map"

    ret = {}

    elem0.find("*").each do
      |elem1|

      ret[elem1.attributes["name"]] =
        xml_to_data elem1

    end

    return ret

  when "array"

    ret = []

    elem0.find("*").each do
      |elem1|

      ret << xml_to_data(elem1)

    end

    return ret

  when "json"
    return MultiJson.load elem0.find("string (json)")

  else
    raise "Don't know how to convert #{elem0.name}"

  end

end