Method: Sequel::Plugins::XmlSerializer::InstanceMethods#to_xml
- Defined in:
- lib/sequel/plugins/xml_serializer.rb
#to_xml(opts = OPTS) ⇒ Object
Return a string in XML format. If a block is given, yields the XML builder object so you can add additional XML tags. Accepts the following options:
- :builder
-
The builder instance used to build the XML, which should be an instance of Nokogiri::XML::Node. This is necessary if you are serializing entire object graphs, like associated objects.
- :builder_opts
-
Options to pass to the Nokogiri::XML::Builder initializer, if the :builder option is not provided.
- :camelize
-
Sets the :name_proc option to one that calls
camelizeon the input string. Requires that you load the inflector extension or another library that adds String#camelize. - :dasherize
-
Sets the :name_proc option to one that calls
dasherizeon the input string. Requires that you load the inflector extension or another library that adds String#dasherize. - :encoding
-
The encoding to use for the XML output, passed to the Nokogiri::XML::Builder initializer.
- :except
-
Symbol or Array of Symbols of columns not to include in the XML output.
- :include
-
Symbol, Array of Symbols, or a Hash with Symbol keys and Hash values specifying associations or other non-column attributes to include in the XML output. Using a nested hash, you can pass options to associations to affect the XML used for associated objects.
- :name_proc
-
Proc or Hash that accepts a string and returns a string, used to format tag names.
- :only
-
Symbol or Array of Symbols of columns to only include in the JSON output, ignoring all other columns.
- :root_name
-
The base name to use for the XML tag that contains the data for this instance. This will be the name of the root node if you are only serializing a single object, but not if you are serializing an array of objects using Model.to_xml or Dataset#to_xml.
- :types
-
Set to true to include type information for all of the columns, pulled from the db_schema.
332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 |
# File 'lib/sequel/plugins/xml_serializer.rb', line 332 def to_xml(opts=OPTS) vals = values types = opts[:types] inc = opts[:include] cols = if only = opts[:only] Array(only) else vals.keys - Array(opts[:except]) end name_proc = model.xml_serialize_name_proc(opts) x = model.xml_builder(opts) x.public_send(name_proc[opts.fetch(:root_name, model.send(:underscore, model.name).gsub('/', '__')).to_s]) do |x1| cols.each do |c| attrs = {} if types attrs[:type] = db_schema.fetch(c, OPTS)[:type] end v = vals[c] if v.nil? attrs[:nil] = '' end x1.public_send(name_proc[c.to_s], v, attrs) end if inc.is_a?(Hash) inc.each{|k, v| to_xml_include(x1, k, v)} else Array(inc).each{|i| to_xml_include(x1, i)} end yield x1 if defined?(yield) end x.to_xml end |