Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Generar XML e ir añadiendo nodos

Estas en el tema de Generar XML e ir añadiendo nodos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. buenas! Estoy creando una banco de preguntas en xml, para ello tengo un formulario en html que llama a un php el cual se encarga ...
  #1 (permalink)  
Antiguo 24/02/2010, 13:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 16 años, 7 meses
Puntos: 0
Generar XML e ir añadiendo nodos

buenas!
Estoy creando una banco de preguntas en xml, para ello tengo un formulario en html que llama a un php el cual se encarga de generar un XML.
Hasta ahí todo bien, el problema lo encuentro en el momento de buscar la raíz para añadirle un nodo. Fatal error: Call to undefined method stdClass::getElementById()
He estado buscando y la verdad es que ya no sé que hacer..

El archivo xml resultante debería tener esta pinta:

<?xml version="1.0"?>
<questions id='uno'>
<questio>
<pregunta>A que huelen las nubes?</pregunta>
<resposta>falsa</resposta>
</questio>
<questio>
<pregunta>A que saben las flores?</pregunta>
<resposta>falsa</resposta>
</questio>
</questions>

Código PHP:
<?php
  $doc 
= new DOMDocument();
  
$doc->validateOnParse = true;
  
$doc->Load( '../banc_preguntes.xml' );
  if( 
$doc=false) {
  
$doc = new DOMDocument("1.0");
  }
  
$doc->formatOutput = true;

  
$r= $doc->getElementById('questions');
  if( 
$r==null ) 
  {
      
$r = $doc->createElement( "questions" );
      
$r->setIdAttribute("xml:id", true);
      
$doc->appendChild( $r );
  }

   
//Insercion de los datos de la pregunta
   
$b = $doc->createElement( "questio" );
 
   
$pregunta = $doc->createElement( "pregunta" );
   
$pregunta->appendChild( $doc->createTextNode( $_POST['pregunta'] ));
   
$b->appendChild( $pregunta );
  
   
$answer = $doc->createElement( "resposta" );
   
$answer->appendChild( $doc->createTextNode( $_POST['resposta'] ));
   
$b->appendChild( $answer );
 
   
$doc->appendChild( $b );
   
$doc->save( '../banc_preguntes.xml'  ); //guardo a XML
?>
Gracias y perdón por el sermón.
  #2 (permalink)  
Antiguo 24/02/2010, 19:40
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 16 años, 11 meses
Puntos: 65
Respuesta: Generar XML e ir añadiendo nodos

1)
Código PHP:
# Te falto un '=' !!!
 
if( $doc=false) {
  
$doc = new DOMDocument("1.0");
  } 
2)
Código PHP:
# Es load(), no Load()...
$doc->Load( '../banc_preguntes.xml' ); 
3) No se si sabias, pero createElement() tiene un segundo parametro opcional, en donde ingresas directamente un valor string, ahorrandote de usar createTextNode(), asi:

Código PHP:
Ver original
  1. $pregunta = $doc->createElement("pregunta", $_POST['pregunta'] );

4) Te estan faltando pasos mira:

Código PHP:
# Traes o creas el tag "questions"
$r= $doc->getElementById('questions');
  if( 
$r==null ) 
  {
      
$r = $doc->createElement( "questions" );
      
$r->setIdAttribute("xml:id", true);
      
$doc->appendChild( $r );
  }

   
# creas un tag "questio" (hijo de questions)
   
$b = $doc->createElement( "questio" );
 
   
# creas un tag "pregunta" (hijo de "questio" y de "questions")
   
$pregunta = $doc->createElement( "pregunta" );
   
$pregunta->appendChild( $doc->createTextNode( $_POST['pregunta'] ));

   
# Se lo agregas al tag padre "questio"
   
$b->appendChild( $pregunta );
  
   
# creas un tag "resposta"
   
$answer = $doc->createElement( "resposta" );
   
$answer->appendChild( $doc->createTextNode( $_POST['resposta'] ));
   
   
# Se lo agregas al tag padre "questio"
   
$b->appendChild( $answer );
  
   
# Te falto un $r->appendChild($b);

   # Agregas el tag "questio" pero te falta agregarselo a "questions" !! 
   
$doc->appendChild( $b );

   
$doc->save( '../banc_preguntes.xml'  ); //guardo a XML
?> 
__________________
HV Studio
Diseño y desarrollo web

Última edición por jackson666; 24/02/2010 a las 19:48
  #3 (permalink)  
Antiguo 25/02/2010, 05:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Generar XML e ir añadiendo nodos

Ya funcionando. Muchas gracias!

Etiquetas: nodos, 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:25.