<?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>Linux, Java y programación &#187; dom</title>
	<atom:link href="http://casidiablo.net/tag/dom/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +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>Convertir XML a Array en PHP</title>
		<link>http://casidiablo.net/parser-xml-php/</link>
		<comments>http://casidiablo.net/parser-xml-php/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 06:10:35 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xml2array]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3614</guid>
		<description><![CDATA[PHP posee una completa API para la manipulación de archivos XML. Sin embargo, algunas veces queremos hacer cosas muy simples y no vale la pena construir manualmente un script que sirva de parser de un archivo XML. En esos casos, podemos hacer uso de una función llamada xml2array. La idea es bastante simple: le pasamos [...]]]></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%252Fcasidiablo.net%252Fparser-xml-php%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Convertir%20XML%20a%20Array%20en%20PHP%22%20%7D);"></div>
<p style="text-align: justify;">PHP posee una <a href="http://www.php.net/manual/en/book.xml.php">completa API para la manipulación de archivos XML</a>. Sin embargo, algunas veces queremos hacer cosas muy simples y no vale la pena construir manualmente un script que sirva de parser de un archivo XML. En esos casos, podemos hacer uso de una función llamada <a href="http://www.bin-co.com/php/scripts/xml2array/">xml2array</a>.</p>
<p style="text-align: justify;">La idea es bastante simple: le pasamos como argumento el string de un archivo XML y nos retorna un array asociativo con los datos del mismo. Los pasos son los siguientes:</p>
<p style="text-align: justify;">
<h3>0. Descargar la función</h3>
<p style="text-align: justify;">Lo primero es <a href="http://www.bin-co.com/php/scripts/xml2array/">descargar la función de aquí</a>. Copias el código PHP y lo pones en un archivo con nombre xml2array.php</p>
<p style="text-align: justify;">
<h3>1. Ejecutar la función [ejemplo]</h3>
<p style="text-align: justify;">Debemos usar la función <a href="http://php.net/manual/en/function.file-get-contents.php"><code>file_get_contents</code></a> para obtener el string con el XML que pasaremos como parámetro a la función. Suponiendo que tenemos este archivo XML:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
&lt;distros type=&quot;linux&quot;&gt;
    &lt;nombre id=&quot;1&quot;&gt;Gentoo&lt;/nombre&gt;
    &lt;nombre id=&quot;2&quot;&gt;Arch&lt;/nombre&gt;
    &lt;nombre id=&quot;3&quot;&gt;Exherbo&lt;/nombre&gt;
&lt;/distros&gt;</pre>
<p style="text-align: justify;">Podríamos usar xml2array así:</p>
<pre class="brush: php; highlight: [4]; title: ; notranslate">&lt;?php
require(&quot;xml2array.php&quot;);
$contenido = file_get_contents('datos.xml');
$resultado = xml2array($contenido);
var_dump($resultado);
?&gt;</pre>
<p>El resultado sería el dump del array:<span id="more-3614"></span></p>
<pre class="brush: php; title: ; notranslate">array(2) {
  [&quot;distros&quot;]=&gt;
  array(1) {
    [&quot;nombre&quot;]=&gt;
    array(6) {
      [0]=&gt;
      string(6) &quot;Gentoo&quot;
      [1]=&gt;
      string(4) &quot;Arch&quot;
      [&quot;0_attr&quot;]=&gt;
      array(1) {
        [&quot;id&quot;]=&gt;
        string(1) &quot;1&quot;
      }
      [&quot;1_attr&quot;]=&gt;
      array(1) {
        [&quot;id&quot;]=&gt;
        string(1) &quot;2&quot;
      }
      [2]=&gt;
      string(7) &quot;Exherbo&quot;
      [&quot;2_attr&quot;]=&gt;
      array(1) {
        [&quot;id&quot;]=&gt;
        string(1) &quot;3&quot;
      }
    }
  }
  [&quot;distros_attr&quot;]=&gt;
  array(1) {
    [&quot;type&quot;]=&gt;
    string(5) &quot;linux&quot;
  }
}</pre>
<p style="text-align: justify;">Veamos un ejemplo un poco más avanzado. Vamos a procesar un documento XML que proporciona Mercado Libre con productos a la venta; además vamos a mostrar un listado HTML con dichos productos:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
require(&quot;xml2array.php&quot;);
$contenido = file_get_contents('http://www.mercadolibre.com.co/jm/searchXml?as_categ_id=1648');
$resultado = xml2array($contenido);
$items = $resultado['response']['listing']['items']['item'];
foreach($items as $item)
    if(isset($item['title'])){
        echo &quot;&lt;p&gt;&lt;a href='{$item['link']}'&gt;&quot;;
        echo &quot;&lt;img src='{$item['image_url']}'/&gt;&lt;br/&gt;&quot;;
        echo &quot;&lt;b&gt;{$item['title']}&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&quot;;
        echo &quot;&lt;em&gt;{$item['subtitle']}&lt;/em&gt;&lt;br&gt;&quot;;
        echo &quot;&lt;em&gt;{$item['currency']}&lt;/em&gt; {$item['price']}&lt;/p&gt;&quot;;
    }
?&gt;</pre>
<p style="text-align: justify;">Ejecutando el ejemplo anterior obtendremos algo como lo siguiente:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2010/02/php-mercado-libre.png" alt="" title="php-mercado-libre" width="512" height="259" class="alignnone size-full wp-image-3620" /></p>
<p style="text-align: justify;">
<h3>Descarga de los ejemplos</h3>
</p>
<p style="text-align: justify;">Puedes descargar los archivos usados en los ejemplos anteriores. Ten en cuenta que la versión de la función que está en la descarga es la última a la fecha (1 de febrero de 2010). Aunque funciona muy bien, los autores tienden a actualizarla, así que podrías echar un vistazo a la página oficial en busca de nuevas versiones.</p>
<p style="text-align: justify;"><a href="http://casidiablo.net/descargar/Ejemplo+Xml2Array" class="descargacodigo">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/parser-xml-php/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

