<?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>JulioGreff.net &#187; xml</title>
	<atom:link href="http://juliogreff.net/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://juliogreff.net</link>
	<description>A mesma web, um novo estilo de desenvolvimento</description>
	<lastBuildDate>Sat, 07 May 2011 17:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>XML Sem Ajax</title>
		<link>http://juliogreff.net/xml-sem-ajax/</link>
		<comments>http://juliogreff.net/xml-sem-ajax/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 20:15:36 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=61</guid>
		<description><![CDATA[Ando meio relapso aqui no blog. A explicação é o jsFrameWorX, estou trabalhando direto com ele (a propósito, mudei a &#8220;documentação&#8221; para fora do script). O que escreverei hoje será a próxima função do bichinho. Quem usa Ajax vai achar isso aqui loucura, quem sempre sonhou com XML direto no JavaScript vai ficar admirado (e [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-sem-o-x/' rel='bookmark' title='Permanent Link: Ajax sem o X'>Ajax sem o X</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
<li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/responsexml/' rel='bookmark' title='Permanent Link: ResponseXML'>ResponseXML</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Ando meio relapso aqui no blog. A explicação é o jsFrameWorX, estou trabalhando direto com ele (a propósito, mudei a &#8220;documentação&#8221; para fora do script). O que escreverei hoje será a próxima função do bichinho.</p>
<p>Quem usa Ajax vai achar isso aqui loucura, quem sempre sonhou com XML direto no JavaScript vai ficar admirado (e não falo de E4X). Usaremos uma simples função chamada <code>loadXMLDoc</code> (achei na Internet, não sei o autor).</p>
<pre><code>function loadXMLDoc(dname){var xmlDoc;// code for IE

if (window.ActiveXObject)

{

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

}

// code for Mozilla, Firefox, Opera, etc.

else if (document.implementation &amp;&amp; document.implementation.createDocument)

{

xmlDoc=document.implementation.createDocument("","",null);

}

else

{

alert('Your browser cannot handle this script');

}

xmlDoc.async=false;

xmlDoc.load(dname);

return(xmlDoc);

}</code></pre>
<p>Esta acima é a gloriosa função. Ela não manterá a mesma forma no jsFrameWorX, e adicionarei algumas características. Assim como o <code>responseXML</code> do <code>XmlHttpRequest</code>, temos a disposição qualquer método <a href="http://www.w3schools.com/dom/default.asp" rel="external" title="XML DOM">DOM do XML</a>. O que mais usaremos provavelmente será <code>getElementsByTagName</code> e <code>getElementById</code>, mas não vem ao caso.</p>
<p>Podemos usar tanto XML estático quanto dinâmico. Como? Lembra-se do <a href="http://juliogreff.net/ajax-sem-o-x/">Ajax sem o X</a>? Usamos o mesmo princípio, passando query strings para um script no lado do servidor, ou mesmo sem query strings, mas com dados já coletados e guardados em algum lugar.</p>
<pre><code>loadXMLDoc("xml_dinamico.php?qs=xml_dinamico");</code></pre>
<p>Aí você pode trabalhar com XML como se estivesse dentro do script, sem precisar usar Ajax (ou o <code>XMLHttpRequest</code>), apesar de podermos fazer requisições síncronas e assíncronas. Esse XML pode ser usado de diversas maneiras: <a href="http://bermonruf.wordpress.com/2006/12/05/criando-graficos-dinamicamente-com-ajax-e-xml/" rel="external friend" title="Criando Gráficos Dinamicamente com Ajax e XML">criar um gráfico</a>, importar informações para uma aplicação, e, talvez no futuro, importar <abbr title="Scalable Vector Graphics">SVG</abbr> direto no HTML.</p>
<p>Quem estiver interessado em XML DOM, visite o <a href="http://www.w3schools.com/dom/default.asp" rel="external" title="XML DOM">W3Schools</a>. Quem ainda não conhece o site, visite, tem ótimos tutoriais sobre tudo que você imaginar (e um pouco mais).</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-sem-o-x/' rel='bookmark' title='Permanent Link: Ajax sem o X'>Ajax sem o X</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
<li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/responsexml/' rel='bookmark' title='Permanent Link: ResponseXML'>ResponseXML</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/xml-sem-ajax/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ResponseXML</title>
		<link>http://juliogreff.net/responsexml/</link>
		<comments>http://juliogreff.net/responsexml/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 21:24:12 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Destaques]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=41</guid>
		<description><![CDATA[Além de texto simples e JSON, existe outra maneira (e muito eficiente) de trocar dados em Ajax. Essa maneira chama-se XML, e considero-a a melhor maneira para trocas de dados mais complexas, envolvendo várias partes de dados. O XML Bem, XML já devia ser algo conhecido para você. Não precisa saber muito, só como colocar [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/historico-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Histórico para Navegação via JavaScript'>Histórico para Navegação via JavaScript</a></li>
<li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/xml-sem-ajax/' rel='bookmark' title='Permanent Link: XML Sem Ajax'>XML Sem Ajax</a></li>
<li><a href='http://juliogreff.net/estatisticas-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Estatísticas para Navegação via JavaScript'>Estatísticas para Navegação via JavaScript</a></li>
<li><a href='http://juliogreff.net/clientside-mostre-seu-codigo/' rel='bookmark' title='Permanent Link: ClientSide: Mostre seu Código!'>ClientSide: Mostre seu Código!</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Além de texto simples e <a href="http://juliogreff.net/javascript-object-notation/" title="JavaScript Object Notation">JSON</a>, existe outra maneira (e muito eficiente) de trocar dados em Ajax. Essa maneira chama-se <acronym title="eXtensible Markup Language">XML</acronym>, e considero-a a melhor maneira para trocas de dados mais complexas, envolvendo várias partes de dados.</p>
<h3>O XML</h3>
<p>Bem, XML já devia ser algo conhecido para você. Não precisa saber muito, só como colocar as tags e o CDATA (esse outro eu explico).</p>
<p>Qualquer XML <strong>válido</strong> (sem nenhum erro de &#8220;ortografia&#8221;) pode ser usado, mas uma certa padronização ajuda. Eu costumo sempre usar o seguinte XML, para quase todos meus trabalhos mais recentes:</p>
<pre><code>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&lt;ajax-response&gt;
  &lt;head&gt;&lt;/head&gt;
  &lt;body&gt;&lt;/body&gt;
  &lt;foot&gt;&lt;/foot&gt;
  &lt;other&gt;&lt;/other&gt;
&lt;/ajax-response&gt;</code></pre>
<p>Esse é um código padrão que eu uso, sinta-se livre para mudá-lo. A tag <code>head</code> trará informações de cabeçalho (eu utilizo como <code>&lt;hN&gt;</code> ou mesmo no título da página). A tag <code>foot</code> trará informações de rodapé, mas nem sempre uso. A tag <code>body</code> traz tudo o que aparecerá na página, como todo mundo já usa. A tag <code>other</code> não costumo utilizar muito, apenas para trazer informações de script (arquivos a carregar, variáveis de funcionamento&#8230;). Dependendo de sua aplicação, você pode usar RSS, RDF, SOAP&#8230;</p>
<p>Como provavelmente incluiremos tags dentro dessas tags, que servirão para serem renderizadas, e não processadas, precisamos colocar elas dentro de uma seção CDATA. Ela faz com que o parser XML ignore tudo que estiver dentro. Use-a assim:</p>
<pre><code>&lt;body&gt;![CDATA[
Aqui vão os dados
]]&gt;&lt;/body&gt;&lt;</code></pre>
<p>Recomendo que você use isso em head, body, foot e other, para evitar futuras dores de cabeça.</p>
<h3>O JavaScript</h3>
<p>Para recuperarmos esse XML, fazemos a requisição normalmente e pedimos <code>responseXML</code>, ao invés de <code>responseText</code>: <code>var xml = [XHR].responseXML;</code>.</p>
<p>Lembra-se de <acronym title="Document Object Model">DOM</acronym>? Vamos utilizá-lo aqui para &#8220;pegar&#8221; o que está em nosso XML. Tudo seria mais fácil se o IE suportasse <acronym title="ECMAScript for XML">E4X</acronym> (posso sonhar, não?)&#8230; Ele é bem parecido com o HTML DOM, mas não me venha usar innerHTML (não testado, mas pela lógica: HTML!) e getElementById (<del datetime="2006-12-05T21:15:42+00:00">também não testado. Se der certo, alguém me avisa!</del> funciona sim, como o Micox disse nos comentários).</p>
<p>No básico, usamos isso:</p>
<pre><code>var body = decodeURIComponent(xml.getElementsByTagName('body')[0].firstChild.data);</code></pre>
<p>Tudo certo. Acabamos? Ainda não. No Firefox (não me pergunte por que), o CDATA é cortado a cada 4096 bytes (4Kb). Nesse caso, temos que pegar vários CDATA caso tenhamos mais de 4Kb. O código é esse:</p>
<pre><code>for(var i=0; i &lt;
xml.getElementsByTagName('body')[0].childNodes.length</code><code>; i++) body += decodeURIComponent(xml.getElementsByTagName('body')[0].childNodes[i].data);
// Pegamos cada node e adicionamos na variavel</code></pre>
<h3>E pra que isso?</h3>
<p>XML é muito usado em Web-services, por ser mais &#8220;padronizado&#8221; que texto (o SOAP é muito usado pra isso). Caso você queira um Leitor de RSS, é possível também. Um leitor de RDF, por que não? As utilidades são muitas.</p>
<p>O futuro (longínquo) da Web é XML. Seria bom que você aprendesse o &#8220;basicão&#8221; como eu. Além de ser legal, você verá que pode utiliza-lo em muitos lugares. E isso facilita e melhora o envio e recebimento de dados, dando a você muitas opções do que incluir ou não.</p>
<p><strong>Update:</strong> o <a href="http://bermonruf.wordpress.com/2006/12/05/criando-graficos-dinamicamente-com-ajax-e-xml" rel="external friend" title="Criando Gráficos Dinamicamente com Ajax e XML">Bernardo</a> fez um ótimo post sobre criar gráficos através de XML e Ajax. Lá tem mais umas vagas informações que não foram passadas aqui, leia lá!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/historico-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Histórico para Navegação via JavaScript'>Histórico para Navegação via JavaScript</a></li>
<li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/xml-sem-ajax/' rel='bookmark' title='Permanent Link: XML Sem Ajax'>XML Sem Ajax</a></li>
<li><a href='http://juliogreff.net/estatisticas-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Estatísticas para Navegação via JavaScript'>Estatísticas para Navegação via JavaScript</a></li>
<li><a href='http://juliogreff.net/clientside-mostre-seu-codigo/' rel='bookmark' title='Permanent Link: ClientSide: Mostre seu Código!'>ClientSide: Mostre seu Código!</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/responsexml/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

