class CFPropertyList::NokogiriXMLParser
def import_xml(node)
def import_xml(node) ret = nil case node.name when 'dict' hsh = Hash.new key = nil children = node.children unless children.empty? then children.each do |n| next if n.text? # avoid a bug of libxml next if n.comment? if n.name == "key" then key = get_value(n) else raise CFFormatError.new("Format error!") if key.nil? hsh[key] = import_xml(n) key = nil end end end if hsh['CF$UID'] and hsh.keys.length == 1 ret = CFUid.new(hsh['CF$UID'].value) else ret = CFDictionary.new(hsh) end when 'array' ary = Array.new children = node.children unless children.empty? then children.each do |n| next if n.text? # avoid a bug of libxml next if n.comment? ary.push import_xml(n) end end ret = CFArray.new(ary) when 'true' ret = CFBoolean.new(true) when 'false' ret = CFBoolean.new(false) when 'real' ret = CFReal.new(get_value(node).to_f) when 'integer' ret = CFInteger.new(get_value(node).to_i) when 'string' ret = CFString.new(get_value(node)) when 'data' ret = CFData.new(get_value(node)) when 'date' ret = CFDate.new(CFDate.parse_date(get_value(node))) end return ret end