Skip to content

rails/activemodel-serializers-xml

Repository files navigation

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages