<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lucas Teixeira &#187; builder</title>
	<atom:link href="http://lucastex.com.br/tag/builder/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucastex.com.br</link>
	<description>@lucastex</description>
	<lastBuildDate>Fri, 07 Jan 2011 12:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Renderizando um XML como resposta em grails</title>
		<link>http://lucastex.com.br/2009/11/03/renderizando-um-xml-como-resposta-em-grails/</link>
		<comments>http://lucastex.com.br/2009/11/03/renderizando-um-xml-como-resposta-em-grails/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 12:45:04 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[builder]]></category>
		<category><![CDATA[render]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=126</guid>
		<description><![CDATA[

Se em grails você precisar renderizar um XML como resposta de uma action, use o método render junto com o builder de XML que temos disponível. Muito fácil, rápido e objetivo.
No exemplo abaixo, um parâmetro nome é passado para a action, que faz uma consulta baseado neste parâmetro e nos nomes dos clientes.
def busca = [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2009%252F11%252F03%252Frenderizando-um-xml-como-resposta-em-grails%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Renderizando%20um%20XML%20como%20resposta%20em%20grails%22%20%7D);"></div>
<p>Se em grails você precisar renderizar um XML como resposta de uma action, use o método render junto com o builder de XML que temos disponível. Muito fácil, rápido e objetivo.</p>
<p>No exemplo abaixo, um parâmetro <em>nome</em> é passado para a action, que faz uma consulta baseado neste parâmetro e nos nomes dos clientes.</p>
<pre class="brush: groovy; title: ;">def busca = {
   def clientes = Cliente.findAllByNomeIlike(&quot;%${params.nome}%&quot;)

   render(contentType: &quot;text/xml&quot;) {
      results() {
         clientes.each {
            cliente -&gt; result() {
               id(cliente.id)
               nome(cliente.nome)
            }
         }
      }
   }
}</pre>
<p>Explicando o auto-explicativo:</p>
<p>Linha 2: Usamos um método dinâmico do grails (não, este método não existe na classe) que permite que eu localize todos os clientes (findAll) por seus nomes (byNome) Ilike (case insensitive) usando o parâmetro <em>nome</em> que veio no request. Esta lista é armazenada na referência clientes.</p>
<p>Linha 4: Pela funcão <em>render</em> deixamos claro que iremos renderizar um conteúdo <em>text/xml</em></p>
<p>Linha 5: Esta será a nossa tag root do xml: <strong>results</strong>. A <a href="http://lucastex.com.br/2009/10/21/nao-tenha-medo-das-closures/" target="_blank">closure</a> que se abre definirá os filhos deste nó.</p>
<p>Linha 6: Cada cliente na lista retornada&#8230;</p>
<p>Linha 7: Será um novo nó <strong>result</strong> do XML de resposta</p>
<p>Linhas 8 e 9: Os fois filhos de <strong>result</strong>, teremos o <strong>id</strong> do cliente e seu <strong>nome</strong>, suficiente para uma combo com auto-complete!<br />
O resultado foi como esperado, e o tempo de fazer o exemplo funcionar foi definitivamente menor que o de escrever este post!</p>
<pre class="brush: xml; title: ;">&lt;results&gt;
   &lt;result&gt;
      &lt;id&gt;313&lt;/id&gt;
      &lt;nome&gt;JOSE DA SILVA&lt;/nome&gt;
   &lt;/result&gt;
   &lt;result&gt;
      &lt;id&gt;817&lt;/id&gt;
      &lt;nome&gt;PATRICIA MARIA SILVA E SILVA&lt;/nome&gt;
   &lt;/result&gt;
   &lt;result&gt;
      &lt;id&gt;91&lt;/id&gt;
      &lt;nome&gt;MARCOS SILVINO&lt;/nome&gt;
   &lt;/result&gt;
&lt;/results&gt;</pre>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2009/11/03/renderizando-um-xml-como-resposta-em-grails/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

