public
Description: A simple rails plugin for the xml serialization of ActiveRecord objects with various xml schemas
Homepage: http://github.com/mattsears/with_xml/
Clone URL: git://github.com/mattsears/with_xml.git
mattsears (author)
Sat Mar 28 18:11:46 -0700 2009
commit  f6d66aba1ed17c217f1b8283f157e37aeb7bcfdd
tree    27c1e637f74ce72193f8fb23b78370acc1d1a325
parent  ebed07243a863910cb5586fd9f942fb1dff44068
name age message
file MIT-LICENSE Loading commit data...
file README
file Rakefile
file init.rb
file install.rb
directory lib/
directory tasks/
directory test/
file uninstall.rb
README
= with_xml

A simple plugin for customizing the xml serialization of ActiveRecord objects.

== INSTALLATION

  script/plugin install git://github.com/mattsears/with_xml.git

== EXAMPLE USAGE

In general, you can define the xml options in the model's class definition.  In this example,
we'll set the xml options in the Article class:

  ActiveRecord::Schema.define(:version => 1) do
    create_table :articles do |t|
      t.string :name, :heading, :body, :author
    end
  end

In the Article's class, we define the xml serialization options in the <b>with_xml</b> block like so:

  class Article < ActiveRecord::Base
    with_xml :feeds, {:alias => ["magazine", "blog", "newspaper"]} do
      bind :heading, :to => ["subject", "title"]
      bind :body, :to => ["content", "message", "post"]
      serialize :except => [ :name ], :skip_instruct => true
    end
  end

With the <b>serialize</b> option, the script sets the global options for the <b>to_xml</b> calls.  In the code above,
we've specified not to include the :name attribute or the xml instructions in the xml return from the <b>to_xml</b> 
call.

   article.to_xml

...becomes...

  #<article>
  #  <author>...</author>
  #  <body>...</body>
  #  <heading>...</heading>
  #</article>

The <b>bind</b> options allows us to set the Article attributes with an xml string that has a different schema.  For 
example, data for our Article class may come from external sources such as blogs, magazines or newspapers with different 
xml schemas.  With the <b>bind</b> options in the code above, we can import any of the following xml documents into the 
Article:

  article.from_xml(xml)

  #<article>
  #  <heading>Page Six</heading>
  #  <body>Content for article</body>
  #</article>

  #<magazine>
  #  <title>The Washington Post</title>
  #  <content>This is the content</content>
  #</magazine>

  #<blog>
  #  <title>TechCrunch</title>
  #  <post>The Post</post>
  #</blog>

  #<newspaper>
  #  <title>The Wall Street Journal</title>
  #  <content>This is the content</content>
  #  <unknown>There is no field for this element.  It will be ignored.</unknown>
  #  <AUTHOR>Caps will be  by default</AUTHOR>
  #</newspaper>

== Contact

Author::     Matt Sears
Email::      matt@mattsears.com
Home Page::  http://mattsears.com/code/with_xml/
License::    MIT Licence (http://www.opensource.org/licenses/mit-license.html)