<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>OnRails.org: Xml Builder</title>
    <link>http://onrails.org/articles/2006/01/10/xml-builder</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Ruby On Rails and related matters.</description>
    <item>
      <title>Xml Builder</title>
      <description>&lt;p&gt;I created the new &lt;em&gt;Playground&lt;/em&gt; category on this blog to expose various aspects regarding Ruby On Rails that I am exploring. It may raise more questions than provide answers, but in any case don&amp;#8217;t hesitate to jump in and add your 2 cents.&lt;/p&gt;


	&lt;p&gt;The &lt;em&gt;xml_builder&lt;/em&gt; method here after uses the &lt;em&gt;render_to_string method to create some xml structure. The xml_string could as well have been in a separate .rxml file and and a simple _render&lt;/em&gt; statement instead of &lt;em&gt;render_as_string&lt;/em&gt; could have saved one line of code. But hey, that&amp;#8217;s what the playground is for!&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;PlaygroundController&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ApplicationController&lt;/span&gt;

  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;xml_builder&lt;/span&gt;
    &lt;span class="ident"&gt;xml_string&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="constant"&gt;XML_END&lt;/span&gt;&lt;span class="string"&gt;
        xml.test do
          xml.language(name)
          xml.description(&amp;quot;Rocks!&amp;quot;)
        end
&lt;/span&gt;&lt;span class="constant"&gt;    XML_END&lt;/span&gt;
    &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;render_to_string&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:inline&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;xml_string&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:locals&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:name&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Ruby&lt;/span&gt;&lt;span class="punct"&gt;'},&lt;/span&gt; &lt;span class="symbol"&gt;:type&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="symbol"&gt;:rxml&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; 
    &lt;span class="ident"&gt;render_text&lt;/span&gt; &lt;span class="ident"&gt;result&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

The output: 
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;language&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;Ruby&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;language&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;description&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;Rocks!&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;description&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;test&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 10 Jan 2006 21:10:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:6960dcfd-4972-45c3-91f2-3a7e2f173e25</guid>
      <author>Daniel Wanja</author>
      <link>http://onrails.org/articles/2006/01/10/xml-builder</link>
      <category>Playground</category>
    </item>
  </channel>
</rss>
