. : : Jonathan Collazo : : .
Un blog con un poquito de todo
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.
martes, julio 29, 2008
XML & PHP con DOM
Me econtré con el asunto de leer y escribir archivos XML, investigué un poco y me econtré con varias formas. Por eso me pareció interesante publicar algo para la "postegridad".
Arrancamos..
Vamos a usar el siguiente archivo XML como ejemplo.
La forma que en mi caso me pareció la mejor, fue "meter" los datos en una matriz o array para luego usarlo
a gusto. Para mi comodidad hice una función:
Arrancamos..
Vamos a usar el siguiente archivo XML como ejemplo.
Hola Caracola KaoS Olla Kaitos a Luisete Nuevo articulo en desarrolloweb Raul Jeje hola, aqui estamos
La forma que en mi caso me pareció la mejor, fue "meter" los datos en una matriz o array para luego usarlo
a gusto. Para mi comodidad hice una función:
Podemos usar el array para poder agregar datos al XML.
function XML_a_Matriz($archivo_xml);
$noticias = $doc->getElementsByTagName( "bloque" );
foreach( $noticias as $noticia )
{
$titulos = $noticia->getElementsByTagName( "titulo" );
$titulo = $titulos->item(0)->nodeValue;
$autores = $noticia->getElementsByTagName( "autor" );
$autor = $autores->item(0)->nodeValue;
$cuerpos= $noticia->getElementsByTagName( "cuerpo" );
$cuerpo= $cuerpos->item(0)->nodeValue;
$noticias_array[] = array(
'titulo' => $noticia,
'autor' => $autor,
'cuerpo' => $cuerpo,
);
}
return $noticias_array;
}
?>
Bueno creo que con este ejemplo da para hacer algo mas complejo. Seguiré leyendo.
include 'XMLaMatriz.php'
$noticias=XML_a_Matriz("noticias.xml");
$noticias[] = array(
'noticia' => 'PRUEBA1',
'autor' => 'Menganito',
'cuerpo' => 'LoQSea',
);
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( "bloque" );
$doc->appendChild( $r );
foreach( $noticias as $noticia_w )
{
$b = $doc->createElement( "noticia" );
$titulo = $doc->createElement( "titulo" );
$titulo->appendChild(
$doc->createTextNode( $noticia_w['titulo'] )
);
$b->appendChild( $titulo );
$autor = $doc->createElement( "autor" );
$autor->appendChild(
$doc->createTextNode( $noticia_w['autor'] )
);
$b->appendChild( $autor );
$cuerpo = $doc->createElement( "cuerpo" );
$cuerpo->appendChild(
$doc->createTextNode( $noticia_w['cuerpo'] )
);
$b->appendChild( $cuerpo );
$r->appendChild( $b );
}
$doc->save("noticias.xml")
?>
lunes, julio 10, 2006
Mejorar esta funcion
Luego de crear una función que funcione como yo quiero me he preguntado si esta se puede mejorar.
function desconectar($dir, $archivo)
{
if(file_exists($dir))
{
$this->id = fopen("archivos/listado.txt","r");
$this->lineas = fread($this->id, filesize("archivos/listado.txt"));
fclose($this->id);
unlink("archivos/listado.txt");
$buscar = array (chr(32).",",",".chr(32),$archivo);
$this->lineas = str_replace($buscar,"",$this->lineas);
$this->lineas = ereg_replace(",,",",",$this->lineas);
if (substr($this->lineas, 1)==",")
{
$this->lineas = substr ($this->lineas, 1);
}
$this->id = fopen("archivos/listado.txt","a+");
fwrite($this->id,"".$this->lineas);
fclose($this->id); unlink($dir);
}
return $this->lineas;
}
sábado, junio 24, 2006
Proyecto
Llevaba tiempo pensado hacer una especie de programa de chat que combine java y php, no se si hay algo como esto y tampoco si funcionara pero como siempre digo..piensa positivo.
Lo primero que pienso hacer es crear la parte de php. Al pasar de los dias les voy posteando los baches que me encuentre.
Saludos.
Lo primero que pienso hacer es crear la parte de php. Al pasar de los dias les voy posteando los baches que me encuentre.
Saludos.
Suscribirse a:
Entradas (Atom)