Skip to content
No description, website, or topics provided.
Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
CONTRIBUTING.md
Gemfile
MIT-LICENSE
README.md
Rakefile
activemodel-serializers-xml.gemspec

README.md

ActiveModel::Serializers::Xml

This gem provides XML serialization for your Active Model objects and Active Record models.

Installation

Add this line to your application's Gemfile:

gem 'activemodel-serializers-xml'

And then execute:

$ bundle

Or install it yourself as:

$ gem install activemodel-serializers-xml

Usage

ActiveModel::Serializers::Xml

To use the ActiveModel::Serializers::Xml you only need to change from ActiveModel::Serialization to ActiveModel::Serializers::Xml.

class Person
  include ActiveModel::Serializers::Xml

  attr_accessor :name

  def attributes
    {'name' => nil}
  end
end

With the to_xml you have an XML representing the model.

person = Person.new
person.to_xml # => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n  <name nil=\"true\"/>\n</person>\n"
person.name = "Bob"
person.to_xml # => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n  <name>Bob</name>\n</person>\n"

From an XML string you define the attributes of the model. You need to have the attributes= method defined on your class:

class Person
  include ActiveModel::Serializers::Xml

  attr_accessor :name

  def attributes=(hash)
    hash.each do |key, value|
      send("#{key}=", value)
    end
  end

  def attributes
    {'name' => nil}
  end
end

Now it is possible to create an instance of person and set the attributes using from_xml.

xml = { name: 'Bob' }.to_xml
person = Person.new
person.from_xml(xml) # => #<Person:0x00000100c773f0 @name="Bob">
person.name          # => "Bob"

ActiveRecord::XmlSerializer

This gem also provides serialization to XML for Active Record.

Please see ActiveRecord::Serialization#to_xml for more information.

Contributing to ActiveModel::Serializers::Xml

ActiveModel::Serializers::Xml is work of many contributors. You're encouraged to submit pull requests, propose features and discuss issues.

See CONTRIBUTING

You can’t perform that action at this time.