<?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; xml</title>
	<atom:link href="http://lucastex.com.br/tag/xml/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>Devolvendo um texto como attachment no response</title>
		<link>http://lucastex.com.br/2010/01/27/devolvendo-um-texto-como-attachment-no-response/</link>
		<comments>http://lucastex.com.br/2010/01/27/devolvendo-um-texto-como-attachment-no-response/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 12:48:52 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[attachment]]></category>
		<category><![CDATA[content disposition]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[render]]></category>
		<category><![CDATA[response]]></category>
		<category><![CDATA[xml]]></category>

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

Me deparei com a seguinte situação em uma aplicação construída usando Grails.
O sistema gravaria o conteúdo de um arquivo (plain xml mesmo) dentro do banco de dados, para evitar dependências com filesystem. Mas este arquivo também precisaria ser lido posteriormente. A solução que estava disponível, era alguma coisa mais ou menos assim:
def arquivo = Arquivo.get(params.id) [...]]]></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%252F2010%252F01%252F27%252Fdevolvendo-um-texto-como-attachment-no-response%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdDzmT5%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Devolvendo%20um%20texto%20como%20attachment%20no%20response%22%20%7D);"></div>
<p>Me deparei com a seguinte situação em uma aplicação construída usando Grails.</p>
<p>O sistema gravaria o conteúdo de um arquivo (plain xml mesmo) dentro do banco de dados, para evitar dependências com filesystem. Mas este arquivo também precisaria ser lido posteriormente. A solução que estava disponível, era alguma coisa mais ou menos assim:</p>
<pre class="brush: groovy; title: ;">def arquivo = Arquivo.get(params.id) //recupera o arquivo da base
render arquivo.texto</pre>
<p>Legal, desta maneira (bem simples até), o conteúdo deste texto seria renderizado na página para o usuário poder salvá-la.</p>
<p>Imaginei que isto pudesse ser incrementado um pouco, e percebi que fazer com que o usuário tivesse que salvar a página (que continha apenas o XML) poderia se tornar um tanto chato com o passar do tempo. Resolvi alterar a action para devolver o texto em anexo ao response. Isso mesmo, com a caixinha para poder salvá-lo.</p>
<p>Olha que simples:</p>
<pre class="brush: groovy; title: ;">def arquivo = Arquivo.get(params.id) //recupera o arquivo da base
response.setContentType &quot;text/xml&quot;
response.setHeader &quot;Content-Disposition&quot;, &quot;attachment;filename=\&quot;${arquivo.nome}.xml\&quot;&quot;
response &lt;&lt; arquivo.texto</pre>
<p>Simples, colocando a instrução no header para que a &#8220;disposição&#8221; da resposta seja &#8220;attachment&#8221; (anexo), o browser ao invés de renderizar apenas o conteudo, retorna um arquivo com este texto.</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/01/27/devolvendo-um-texto-como-attachment-no-response/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizando XMLs no Safari de forma decente</title>
		<link>http://lucastex.com.br/2009/11/09/visualizando-xmls-no-safari-de-forma-decente/</link>
		<comments>http://lucastex.com.br/2009/11/09/visualizando-xmls-no-safari-de-forma-decente/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:08:33 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[xml]]></category>

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

Se você usa um Mac e navega com o Safari, com certeza sofre pra visualizar XMLs nele, fica como o firefox antigo, uma bagunça.
Neste caso, acaba tendo que abrir o source da página para conseguir ler o conteúdo.
Este plugin do safari, chamado XMLView Plugin com certeza me ajuda muito e pode te ajudar. É muito [...]]]></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%252F09%252Fvisualizando-xmls-no-safari-de-forma-decente%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Visualizando%20XMLs%20no%20Safari%20de%20forma%20decente%22%20%7D);"></div>
<p>Se você usa um Mac e navega com o Safari, com certeza sofre pra visualizar XMLs nele, fica como o firefox antigo, uma bagunça.</p>
<p>Neste caso, acaba tendo que abrir o source da página para conseguir ler o conteúdo.</p>
<p><a href="http://www.entropy.ch/software/MacOSX/xmlviewplugin/">Este plugin do safari, chamado XMLView Plugin</a> com certeza me ajuda muito e pode te ajudar. É muito simples, basta descompactar seu conteúdo em <strong>$HOME/Library/Internet Plug-Ins</strong> e reiniciar o navegador.</p>
<p>Depois de reiniciar o Safari, abra <a href="http://www.entropy.ch/software/MacOSX/xmlviewplugin/test.xml">qualquer XML</a> e faça o teste! Use e abuse do layout bem definido e opções de expand/collapse dos nós. Veja abaixo um exemplo:</p>
<p style="text-align: center;">
<div id="attachment_169" class="wp-caption aligncenter" style="width: 669px"><img class="size-full wp-image-169 " title="Safari vendo XML com o plugin XMLView Plugin" src="http://lucastex.com.br/wp-content/uploads/2009/11/dih.png" alt="Safari vendo XML com o plugin XMLView Plugin" width="659" height="373" /><p class="wp-caption-text">Safari vendo XML com o plugin XMLView Plugin</p></div>
</p>
<p>Se gostou, me deve um real. :)</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2009/11/09/visualizando-xmls-no-safari-de-forma-decente/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>

