viernes, julio 31, 2009
La Verdad de la Milanesa
Nunca pense que sería capaz de encontrarla, pero en los ultimos meses sentí una perturbacion en la fuerza que poco a poco fue creciendo...desde hace una semana vengo rondando tratando de verificar que esa sea. Lo complicado es saberla en si, solo se que la verdad de la milanesa la tiene la doña que hace las milanesas al cruzar la calle. He dicho!
sábado, julio 11, 2009
DOM - Document Object Model -> 2ª Parte
Pequeña definición de introducción:
"(..)es esencialmente una interfaz de programación de aplicaciones que proporciona un conjunto estándar de objetos para representar documentos HTML y XML, un modelo estándar sobre cómo pueden combinarse dichos objetos, y una interfaz estándar para acceder a ellos y manipularlos.
A través del DOM, los programas pueden acceder y modificar el contenido, estructura y estilo de los documentos HTML y XML, que es para lo que se diseñó principalmente.
El responsable del DOM es el consorcio W3C (World Wide Web Consortium).
En efecto, el DOM es una API para acceder, añadir y cambiar dinámicamente contenido estructurado en documentos con lenguajes como ECMAScript (Javascript).”
Referencia, Wikipedia: http://es.wikipedia.org/wiki/Document_Object_Model
A continuación voy a presentar algunos ejemplos con su explicación.
(Supongo que ya conocen XML).
Vamos a usar el siguiente XML:
biblioteca.xml
La estructura es la siguiente:
Tenemos el tag parent ("padre"), y en tenemos que seria un child y dentro de este tenemos ,,.
Una imagen ilustrando el árbol DOM del xml:
El nodo (node) biblioteca tiene dos (o más) hijos (child), que en nuestro ejemplo es el nodo libro que a su vez tiene 3 nodos hijos (titulo,autor,editor) y estos un nodo hijo con texto.
Leer archivo XML con DOM
Conociendo la estructura, pasamos a leer el xml desde php:
leerXml.php
}
?>
De esta forma logramos mostrar el contenido del archivo xml.
¿Por que item(0)?: Si vemos nuestra estructura contamos con solo un child,
titulo,autor,editor. En el caso de que el libro tenga varios child habria que recorrer el valor de item().
Esto fue mas o menos lo mismo que en el post anterior, pero supongo yo, mejor explicado.
DOM es una herramienta muy potente que hoy en dia esta muy de moda con ajax. Sobre XML & PHP existen muchas herramientas recomiendo darse una vuelta por:
XML Manipulation
Esto es todo por el momento, espero les sea de alguna utilidad.
"(..)es esencialmente una interfaz de programación de aplicaciones que proporciona un conjunto estándar de objetos para representar documentos HTML y XML, un modelo estándar sobre cómo pueden combinarse dichos objetos, y una interfaz estándar para acceder a ellos y manipularlos.
A través del DOM, los programas pueden acceder y modificar el contenido, estructura y estilo de los documentos HTML y XML, que es para lo que se diseñó principalmente.
El responsable del DOM es el consorcio W3C (World Wide Web Consortium).
En efecto, el DOM es una API para acceder, añadir y cambiar dinámicamente contenido estructurado en documentos con lenguajes como ECMAScript (Javascript).”
Referencia, Wikipedia: http://es.wikipedia.org/wiki/Document_Object_Model
A continuación voy a presentar algunos ejemplos con su explicación.
(Supongo que ya conocen XML).
Vamos a usar el siguiente XML:
biblioteca.xml
John Doe Existo? NoSeQue Juan Perez Uno mas NoSeQue
La estructura es la siguiente:
Tenemos el tag parent ("padre")
Una imagen ilustrando el árbol DOM del xml:
El nodo (node) biblioteca tiene dos (o más) hijos (child), que en nuestro ejemplo es el nodo libro que a su vez tiene 3 nodos hijos (titulo,autor,editor) y estos un nodo hijo con texto.
leerXml.php
load('biblioteca.xml');
//cargamos todos los libros.
$biblioteca = $dom->getElementsByTagName("libro");
foreach($biblioteca as $libro){
$titulo = $libro->getElementsByTagName("titulo");
//Obtengo el titulo.
$titulo = $titulo->item(0)->nodeValue;
$autor = $libro->getElementsByTagName("autor");
$autor = $autor->item(0)->nodeValue;
$editor = $libro->getElementsByTagName("editor");
$editor = $editor->item(0)->nodeValue;
echo "Titulo: $titulo
- Autor: $autor
- Editor: $editor
}
?>
De esta forma logramos mostrar el contenido del archivo xml.
¿Por que item(0)?: Si vemos nuestra estructura contamos con solo un child,
titulo,autor,editor. En el caso de que el libro tenga varios child
Generar XML con DOM
Para crear un xml recomiendo tener los datos en un array, veamos el ejemplo:
$biblioteca = array();
$biblioteca[] = array(
'titulo' => 'Otro Mas',
'autor' => 'Juan Perez',
'editor' => 'NoSeQue'
);
$biblioteca[] = array(
'titulo' => 'De Aca',
'autor' => 'John Doe',
'editor' => 'NoSeQue'
);
$dom = new DomDocument();
$dom->formatOutput = true; //Para que el xml salga indentado
//Creo el tag padre, (parent)
$padre = $dom->createElement('biblioteca');
$dom->appendChild($padre);
foreach($biblioteca as $libro){
//Creo el child de biblioteca, libro
$lib = $dom->createElement('libro');
$titulo = $dom->createElement('titulo');
$titulo->appendChild($dom->createTextNode($libro['titulo'])); //Creo un node con el titulo
$autor = $dom->createElement('autor');
$autor->appendChild($dom->createTextNode($libro['autor'])); //Idem anterior
$editor = $dom->createElement('editor');
$editor->appendChild($dom->createTextNode($libro['editor']));// ;-)
$lib->appendChild($titulo); //Agrego el autor al libro
$lib->appendChild($autor); //Idem
$lib->appendChild($editor); //Idem
$padre->appendChild($lib); //Agrego el libro a la biblioteca
}
if($dom->save('nuevo.xml')){
echo 'Generado con Exito';
}else{
echo 'Ups!';
}
?>
Esto fue mas o menos lo mismo que en el post anterior, pero supongo yo, mejor explicado.
DOM es una herramienta muy potente que hoy en dia esta muy de moda con ajax. Sobre XML & PHP existen muchas herramientas recomiendo darse una vuelta por:
XML Manipulation
Esto es todo por el momento, espero les sea de alguna utilidad.
Suscribirse a:
Entradas (Atom)