Foros del Web » Programando para Internet » PHP »

Duda sobre creacion de un xml con php

Estas en el tema de Duda sobre creacion de un xml con php en el foro de PHP en Foros del Web. Hola, esto no es mas que una duda sobre cual es la manera "correcta" de crear un xml. Lo que comunmente encuentro respecto a como ...
  #1 (permalink)  
Antiguo 30/09/2014, 10:31
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 9 meses
Puntos: 2
Pregunta Duda sobre creacion de un xml con php

Hola, esto no es mas que una duda sobre cual es la manera "correcta" de crear un xml.

Lo que comunmente encuentro respecto a como crear un xml es que hay que utilizar la clase DomDocument:

Código PHP:
$xml=new DomDocument("1.0","UTF-8");
 
$raiz=$xml->createElement("bandas");
$raiz=$xml->appendChild($raiz);
 
/*primera banda--------------------------*/  
$banda=$xml->createElement("banda");
$banda=$raiz->appendChild($banda);
 
$nombre=$xml->createElement("nombre""Metallica");
$nombre=$banda->appendChild($nombre);
 
$cancion=$xml->createElement("cancion""Enter Sandman");
$cancion=$banda->appendChild($cancion);
 
/*segunda banda--------------------------*/  
$banda=$xml->createElement("banda");
$banda=$raiz->appendChild($banda);
 
$nombre=$xml->createElement("nombre""Finntroll");
$nombre=$banda->appendChild($nombre);
 
$cancion=$xml->createElement("cancion""Solsagan");
$cancion=$banda->appendChild($cancion);
 
/*tercera banda--------------------------*/  
$banda=$xml->createElement("banda");
$banda=$raiz->appendChild($banda);
 
$nombre=$xml->createElement("nombre""Stratovarius");
$nombre=$banda->appendChild($nombre);
 
$cancion=$xml->createElement("cancion""Black Diamond");
$cancion=$banda->appendChild($cancion);
 
/*guardar xml--------------------------------*/  
$xml->formatOut=true;
 
$strings_xml=$xml->saveXML();
 
if(
$xml->save("bandas.xml")){
  echo 
"Termino de crear el xml.";
}else{
  echo 
"No pudimos guardar el xml.";

Pero, asi no es como yo lo aprendi, yo lo aprendi con un excompañero de trabajo asi:

Código PHP:
$xmlstream.='<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    <datos>
        <opcion>'.$_POST['opciones'].'</opcion>';
                //$_POST['opciones'] es un valor de un select
          
$xmlstream.='
    </datos>';

$xmlruta= 'xml/control.xml';
                if($guarda = fopen($xmlruta, 'w+')) 
                {    
                if(fwrite($guarda, $xmlstream))
                {
                    header('Location: http://www.adondesea.com');
                }
                fclose($guarda);
                }
Yo soy una persona con conocimientos intermedios, aun tengo bastante que aprender, y en ocaciones me encuentro con situaciones como esta; casi no he encontrado informacion de como crear un xml de la 2 manera, no se si influya en algo al momento de crear el xml, o simplemente si forma parte o no de "las buenas practicas de programacion".
  #2 (permalink)  
Antiguo 30/09/2014, 11:57
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: Duda sobre creacion de un xml con php

No es que exista una manera correcta o incorrecta de crear un xml. Lo que ocurre es que si por ejemplo el día de mañana deseas añadir nuevos campos, insertar elementos, obtener hijos de una etiqueta, borrar y demás tu método se quedara corto. Al poder manipular el DOM tienes acceso a todo el contenido del xml y así ser mas versatil.

Yo en lo personal te aconsejo que estudies que es el DOM en general, luego el DOM para un xml y a partir de ahí ya usar las clases que implementa PHP para crear los mismos.

Espero te sea de utilidad la información.


http://php.net/manual/es/intro.simplexml.php
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: correctamente, creación, 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 03:58.