def to_xml_document(opts={}, doc = nil)
xml = XMLSerializers::SERIALIZER
doc ||= xml.new_document
default_xml_element_name = lambda { Extlib::Inflection.underscore(self.class.name).tr("/", "-") }
root = xml.root_node(doc, opts[:element_name] || default_xml_element_name[])
properties_to_serialize(opts).each do |property|
value = send(property.name)
attrs = (property.type == String) ? {} : {'type' => property.type.to_s.downcase}
xml.add_node(root, property.name.to_s, value, attrs)
end
(opts[:methods] || []).each do |meth|
if self.respond_to?(meth)
xml_name = meth.to_s.gsub(/[^a-z0-9_]/, '')
value = send(meth)
xml.add_node(root, xml_name, value.to_s) unless value.nil?
end
end
xml.output(doc)
end