Module: ROXML::ClassMethods::Operations
- Defined in:
- lib/roxml.rb
Instance Method Summary collapse
-
#from_xml(data, *initialization_args) ⇒ Object
Creates a new Ruby object from XML using mapping information annotated in the class.
Instance Method Details
#from_xml(data, *initialization_args) ⇒ Object
Creates a new Ruby object from XML using mapping information annotated in the class.
The input data is either an XML::Node, String, Pathname, or File representing the XML document.
Example
book = Book.from_xml(File.read("book.xml"))
or
book = Book.from_xml("<book><name>Beyond Java</name></book>")
initialization_args passed into from_xml will be passed into the object’s .new, prior to populating the xml_attrs.
After the instatiation and xml population
See also: xml_initialize
560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 |
# File 'lib/roxml.rb', line 560 def from_xml(data, *initialization_args) xml = XML::Node.from(data) new(*initialization_args).tap do |inst| inst.roxml_references = roxml_attrs.map {|attr| attr.to_ref(inst) } inst.roxml_references.each do |ref| value = ref.value_in(xml) inst.respond_to?(ref.opts.setter) \ ? inst.send(ref.opts.setter, value) \ : inst.instance_variable_set(ref.opts.instance_variable_name, value) end inst.send(:after_parse) if inst.respond_to?(:after_parse, true) end rescue ArgumentError => e raise e, e. + " for class #{self}" end |