Foros del Web » Programando para Internet » PHP »

Problemas con addAtributte

Estas en el tema de Problemas con addAtributte en el foro de PHP en Foros del Web. Hola que tal! con este codigo trato de implementar un addAtribute a un archivo .xml desde un formulario php y tengo problemas!! agradeceria de la ...
  #1 (permalink)  
Antiguo 05/03/2011, 17:08
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Problemas con addAtributte

Hola que tal! con este codigo trato de implementar un addAtribute a un archivo .xml desde un formulario php y tengo problemas!! agradeceria de la opinion de los usurarios del foro para orientarme!


INGRESO LOS REGISTROS OBTENIDOS DEL FORMULARIO AL XML

Código PHP:


   $xml 
simplexml_load_file('xml/custom.xml'nulltrue);
   
    
$xml->addAttribute('tipo''documental');

   
   

      
       
       
$track $xml->addChild('video');
   
$track ->addchild('title'$_POST['titulo'] );  
    
$track ->addchild('youtube',$_POST['codigo'] );  
   
$track ->addchild('details'$_POST['detalle']);  
   
   
   
   
$_POST['titulo'] ;
   
$_POST['codigo'] ;
   
$_POST['detalle'] ;

   
   
         
$xml->asXML('xml/custom.xml'); 

Pero no logro que me agregue asi:

<video tipo="Documental" >



Y ademas me sale este warning :s
Código:
Warning: SimpleXMLElement::addAttribute() [function.SimpleXMLElement-addAttribute]: Attribute already exists in F:\easy\EasyPHP 2.0b1\www\public_html\agregar-empresas.php on line 32
Gracias
  #2 (permalink)  
Antiguo 06/03/2011, 09:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con addAtributte

no entiendo, ¡si el error es tan claro!
Cita:
Attribute already exists
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/03/2011, 12:07
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

con esto funciona

Código PHP:


   $xml 
simplexml_load_file('xml/custom.xml'nulltrue);
   
  

     
$playlist$xml->addChild('playlist' );


     
     
  






       
        
        
        
$video_list $playlist->addChild('video_list');


$categoria $video_list ->addchild('category''' );  
    
$video2 $categoria->addchild('video''' );  




$video_list->addAttribute('play_mode''documental2');

$categoria->addAttribute('title''documental2');



$video2->addAttribute('title''documental2');

$video2->addAttribute('link''documental2');

$video2->addAttribute('thumb''documental2');






  
   
   
$video2 ->addchild('short'$_POST['titulo'] );  

   





   
   
         
$xml->asXML('xml/custom.xml'); 
  #4 (permalink)  
Antiguo 06/03/2011, 12:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problemas con addAtributte

Ok, pero ¿entendiste lo que te quiso indicar?, o ¿ya pudiste resolverlo?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 06/03/2011, 12:28
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

La verdad que no pero puede solucionarlo , Gracias !!!

ahora tengo otro problemita que estoy tratando de solucionar

este es el formato del xml

Código:

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

<video title="Cataratas" link="http://www.youtube.com/lgPeQGT0NZQ" thumb="thumbs/animation/ratatouille.jpg">
<short>Cataratas del Iguazú</short>
</video>
</category>
</video_list>
</playlist>
el tema es que me lo agrega despues de cerrar "playlist" que puedo hacer para que quede dentro de category , de video_list y de playlist ,

y que ademas quede como primer registro primero de los dos video existentes!!


el codigo que uso es este

Código PHP:

 $xml 
simplexml_load_file('xml/custom.xml'nulltrue);

     
$video2$xml->addChild('video' );


$video2->addAttribute('title''documental2');

$video2->addAttribute('link''documental2');

$video2->addAttribute('thumb''documental2');

   
   
$video2 ->addchild('short'$_POST['titulo'] );  

         
$xml->asXML('xml/custom.xml'); 
  #6 (permalink)  
Antiguo 06/03/2011, 12:42
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

me autorespondo

Código PHP:


    $video2
$xml-> playlist -> video_list -> category ->addChild('video' ); 

SOLO ME FALTA QUE SEA COLOCADO COMO PRIMER REGISTROY NO ULTIMO
  #7 (permalink)  
Antiguo 06/03/2011, 12:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problemas con addAtributte

Mira este ejemplo para que veas como hacerlo.
Código PHP:
Ver original
  1. <?php
  2. $xml = new SimpleXMLElement("<foo></foo>");
  3. $xml->addAttribute('foo', 'foo');
  4. $bar = $xml->addChild('bar');
  5. $bar->addAttribute('bar', 'bar');
  6. $baz = $bar->addChild('baz', 'baz');
  7. $candy = $bar->addChild('candy', 'candy');
  8. echo $xml->asXML();
O ya veo que lo lograste
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 06/03/2011, 12:53
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

Gracias Abimaelrc!! con ese ejmplo inserta los registros al principio? por que con el que hice yo me los pone ultimos :S

Saludos
  #9 (permalink)  
Antiguo 06/03/2011, 12:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problemas con addAtributte

Con ese ejemplo yo estoy creando todo desde el principio. El primero o que hace es crear las etiquetas <foo></foo> el segundo lo que hace es crear dentro de las etiquetas foo las etiquetas <bar></bar> y el tercer y cuarto dentro de las etiquetas bar creo <baz></baz> y <candy></candy>. Observa bien el ejemplo para que puedas entender mejor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 06/03/2011, 13:21
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

exacto pero las etiquetas ya estan credas


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

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


y quiero que se ponga mi registro video antes de los dos que ya estan y no despues

perdon si mi pregunta es media estupida o ya fue respondida!! saludos
  #11 (permalink)  
Antiguo 06/03/2011, 13:54
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

revisando por el foro pude hacer algo asi con DOM, efectivamente puedo hacer que el registro lo coloque primero pero quiero agregarle un hijo


Código PHP:


 
try {  
           
$dom = new DOMDocument();          
  
           
$dom->load('xml/custom.xml');

           
$node $dom->createElement('video');        
  
           
$node->setAttribute('title''documental2');  
  
           
$node->setAttribute('link''documental2');    
  
           
$node->setAttribute('thumb''documental2');    
           
          
  
      

            
$xpath  = new DOMXPath($dom);        
  
          
$first  $xpath->query('//video[1]')->item(0);

            if(
null === $first) {
  
                
$dom->documentElement->appendChild($node);            
  
            } else {
  
                
$first->parentNode->insertBefore($node$first);
            }
            
$dom->save('xml/custom.xml');

    } catch(
Exception $e) {
  
            
//handle exception
  
      


por que solo em lo guarda asi


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



y quiero quede asi




<video title="Iguazú" link="http://www.youtube.com/lgPeQGT0NZQ" thumb="thumbs/animation/ratatouille.jpg">
<short>Cataratas del Iguazú</short>
</video>
  #12 (permalink)  
Antiguo 06/03/2011, 14:14
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

me amo !!, gracias por la ayuda amigos este es el codigo que necesitaba

Código PHP:



   
try {  
           
$dom = new DOMDocument();          
  
           
$dom->load('xml/custom.xml');

           
$node $dom->createElement('video');        
  
           
$node->setAttribute('title''documental2');  
  
           
$node->setAttribute('link''documental2');    
  
           
$node->setAttribute('thumb''documental2');  
           
           
           
        
$short$dom->createElement"short" );
        
 
$short->appendChild(
 
$dom->createTextNode'texto')
 );
 
$node->appendChild$short );
 

          
  
      

            
$xpath  = new DOMXPath($dom);        
  
          
$first  $xpath->query('//video[1]')->item(0);

            if(
null === $first) {
  
                
$dom->documentElement->appendChild($node);            
  
            } else {
  
                
$first->parentNode->insertBefore($node$first);
            }
            
$dom->save('xml/custom.xml');

    } catch(
Exception $e) {
  
            
//handle exception
  
      

  #13 (permalink)  
Antiguo 06/03/2011, 14:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problemas con addAtributte

No, no fue contestada. El addChild lo que haces es añadir al final de todo código. Una forma de lograrlo es creando todo desde el comienzo y luego añadiendo lo demás. Algo como
Código PHP:
Ver original
  1. <?php
  2. function appendOldXmlToTheEnd($newXml, $oldXml){
  3.     foreach($oldXml as $key => $value){
  4.         list($keyChild) = $value->children();
  5.         if(is_object($keyChild)){
  6.             appendOldXmlToTheEnd($newXml->addChild($key), $value);
  7.         }else{
  8.             $newXml->addChild($key, $value);
  9.         }
  10.     }
  11. }
  12. $xmlString = <<<XMLSTRING
  13. <foo>
  14.     <vegetable>
  15.         <bar>
  16.             <baz>baz</baz>
  17.             <candy>candy</candy>
  18.         </bar>
  19.     </vegetable>
  20. </foo>
  21. XMLSTRING;
  22. $xml = new SimpleXMLElement('<foo></foo>');
  23. $xml->addChild('fruits','fruits');
  24. appendOldXmlToTheEnd($xml, new SimpleXMLElement($xmlString));
  25. echo $xml->asXML();

Ups, varios minutos después, que bueno que hayas encontrado lo que necesitas
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 06/03/2011, 15:29
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Problemas con addAtributte

mil gracias!

Etiquetas: Ninguno
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 00:52.