Foros del Web » Programando para Internet » PHP »

insertar registro al principio de un xml

Estas en el tema de insertar registro al principio de un xml en el foro de PHP en Foros del Web. hola a todos!! estoy empezando con el php y buceando, buceando entre los foros he conseguido conectar flash con php para modificar un xml y ...
  #1 (permalink)  
Antiguo 30/11/2010, 06:10
 
Fecha de Ingreso: marzo-2009
Mensajes: 83
Antigüedad: 15 años, 8 meses
Puntos: 2
insertar registro al principio de un xml

hola a todos!! estoy empezando con el php y buceando, buceando entre los foros he conseguido conectar flash con php para modificar un xml y crear la típica sección de noticias.

lo q quiero es q al insertar una nueva noticia desde flash se coloque en primer lugar del xml. no se si me he explicado bien??

el xml no es de gran importancia en este caso, en resumen lo q quiero es esto:

Código:
<xml>

-------<nuevo registro />
<registro 1 />
<registro 2 />

</xml>
mi php contiene esto por ahora, y lo q hace es añadir nuevos registros, xo a continuacion de los ya existentes:

Código PHP:
$noticias = new SimpleXMLElement('texto.xml'nulltrue); 

$not $noticias->addChild('noticia');
$not->addAttribute('id'$Nid);  
$not->addAttribute('titulo'$Ntitulo);   
$not->addAttribute('fecha'$Nfecha);   
$not->addAttribute('contenido'$Ncontenido);   

$noticias->asXML('texto.xml'); 
A ver si me podies ayudar, muchas gracias de antemano!!
  #2 (permalink)  
Antiguo 30/11/2010, 06:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: insertar registro al principio de un xml

Probaste con DOM ?
  #3 (permalink)  
Antiguo 30/11/2010, 10:56
 
Fecha de Ingreso: marzo-2009
Mensajes: 83
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: insertar registro al principio de un xml

Si probé con DOM para insertar registros, xo como ya he dicho no estoy muy puesto en php y con SimpleXMLElement conseguí exactamente lo q necesitaba, por eso no seguí intentandolo con DOM. es más fácil así??

Si me pasarais algún ejemplo o algún tutorial de como hacerlo todo con DOM sería genial, ya q por mi cuenta no lo he conseguido..

Muchas gracias!!
  #4 (permalink)  
Antiguo 30/11/2010, 13:48
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: insertar registro al principio de un xml

Con DOM seria algo asi:

Código PHP:
Ver original
  1. try {
  2.  
  3.      $dom = new DOMDocument();          
  4.      $dom->load('simple.xml');
  5.  
  6.      $node = $dom->createElement('noticia');        
  7.      $node->setAttribute('id',  $Nid);  
  8.      $node->setAttribute('titulo', $Ntitulo);    
  9.      $node->setAttribute('fecha', $Nfecha);    
  10.      $node->setAttribute('contenido', $Ncontenido);  
  11.  
  12.       $xpath  = new DOMXPath($dom);        
  13.       $first  = $xpath->query('//noticia[1]')->item(0);
  14.  
  15.       if(null === $first) {
  16.           $dom->documentElement->appendChild($node);            
  17.       } else {
  18.           $first->parentNode->insertBefore($node, $first);
  19.       }
  20.  
  21.       $dom->save('simple.xml');
  22.  
  23. } catch(Exception $e) {
  24.       //handle exception
  25. }

Salu2.
  #5 (permalink)  
Antiguo 01/12/2010, 02:45
 
Fecha de Ingreso: marzo-2009
Mensajes: 83
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: insertar registro al principio de un xml

Gracias por ayudarme!! lo pruebo y os cuento!!
  #6 (permalink)  
Antiguo 01/12/2010, 03:15
 
Fecha de Ingreso: marzo-2009
Mensajes: 83
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: insertar registro al principio de un xml

Funcionó perfectamente!!! muchas gracias!!!

ahora me faltan dos detalles:

quiero saber como hacer q haya solo "X" noticias, vamos q al poner la X+1, la primera q se creó (q estará la última) se elimine. alguna idea??

y el tema de los caracteres especiales (acentos, eñes, etc), q estoy con ello!! jejjeje

muchas gracias por todo masterpuppet!!
  #7 (permalink)  
Antiguo 01/12/2010, 12:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: insertar registro al principio de un xml

Podría ser así:

Código PHP:
Ver original
  1. try{
  2.  
  3.     $dom = new DOMDocument();          
  4.     $dom->load('simple.xml');
  5.  
  6.     $node = $dom->createElement('noticia');        
  7.     $node->setAttribute('id', $Nid);  
  8.     $node->setAttribute('titulo', $Ntitulo);    
  9.     $node->setAttribute('fecha', $Nfecha);    
  10.     $node->setAttribute('contenido', $Ncontenido);
  11.  
  12.     $xpath = new DOMXPath($dom);        
  13.     $first = $xpath->query('//noticia[1]')->item(0);
  14.  
  15.     if (null === $first) {
  16.         $dom->documentElement->appendChild($node);            
  17.     } else {
  18.         $first->parentNode->insertBefore($node, $first);
  19.     }
  20.  
  21.     $max   = 10;
  22.     $total = $xpath->evaluate('count(//noticia)');
  23.            
  24.     if ($total > $max) {
  25.         $nodeList = $xpath->query(sprintf('//noticia[position() > %s]', $max));                    
  26.         foreach($nodeList as $node) {                    
  27.             $dom->documentElement->removeChild($node);
  28.         }
  29.     }            
  30.            
  31.     $dom->save('simple.xml');
  32.  
  33. } catch (Exception $e) {
  34.      //handle exception
  35. }

Nota: podrias extender la clase DOMDocument y agregarle toda la funcionalidad que necesitas.

Salu2.
  #8 (permalink)  
Antiguo 02/12/2010, 03:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 83
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: insertar registro al principio de un xml

Funciona de pm... muchas gracias!!
  #9 (permalink)  
Antiguo 06/03/2011, 13:59
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: insertar registro al principio de un xml

hola !! estoy utilizando el codigo que propusieron y el registro me queda asi


<video id="gede" titulo="gede" fecha="gede" contenido="gede"/>


que puedo hacer para que quede asi?


<video title="Iguazú" link="http://www.youtube.com/lgPeQGT0NZQ" thumb="thumbs/animation/ratatouille.jpg">
<short>Cataratas del Iguazú</short>
</video>



GRACIAS!!!!!

Etiquetas: principio, registro, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.