Foros del Web » Programando para Internet » PHP »

Consulta DomDocument.

Estas en el tema de Consulta DomDocument. en el foro de PHP en Foros del Web. Ante todo: gracias. Espero que alguien me pueda ayudar con este tema que no logro entender, o saber de las formas posibles cual es la ...
  #1 (permalink)  
Antiguo 28/06/2011, 10:08
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 6
Consulta DomDocument.

Ante todo: gracias. Espero que alguien me pueda ayudar con este tema que no logro entender, o saber de las formas posibles cual es la mejor; Estoy creando una pequeña clase para manejar Archivos XML, y me falta generar una funcion para agregar nodos al documento, en primera instacia lo hice de la forma sencilla:

Código PHP:
public function agregarElementosAlDocumento($nodos){
    
$this->documento->appendChild($nodos);

pero claramente esto no es correcto cuando, quiero agregar los nodos, o nodo a un sector particular, vi varias formas de hacerlo, cual me recomiendan ustedes, quede trabado en este tema.

Muchas Gracias. Saludos.
  #2 (permalink)  
Antiguo 28/06/2011, 10:49
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, 10 meses
Puntos: 1517
Respuesta: Consulta DomDocument.

Es difícil ayudarte con esos pocos datos. ¿Podrías brindar lo que hayas hecho?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 28/06/2011, 11:17
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, 10 meses
Puntos: 1517
Respuesta: Consulta DomDocument.

Bueno un demo, mientras contestas
Código PHP:
Ver original
  1. <?php
  2. $xml = <<<XML
  3. <foo>
  4.     <bar>
  5.         <candy>candy</candy>
  6.         <fruits>fruits</fruits>
  7.         <vegetable>vegetable</vegetable>
  8.     </bar>
  9.     <baz>
  10.         <candy>candy</candy>
  11.         <fruits>fruits</fruits>
  12.     </baz>
  13. </foo>
  14. XML;
  15. $dom = new DOMDocument();
  16. $dom->preserveWhiteSpace = false;
  17. $dom->formatOutput = true;
  18. $dom->loadXML($xml);
  19. $baz = $dom->getElementsByTagName('baz')->item(0);
  20.  
  21. $vegetable = $dom->createElement('vegetable','vegetable');
  22. $baz->appendChild($vegetable);
  23.  
  24. echo $dom->saveXML();
  25.  
  26. /**
  27.  * Output:
  28.  *<?xml version="1.0"?>
  29.  * <foo>
  30.  *   <bar>
  31.  *     <candy>candy</candy>
  32.  *     <fruits>fruits</fruits>
  33.  *     <vegetable>vegetable</vegetable>
  34.  *   </bar>
  35.  *   <baz>
  36.  *     <candy>candy</candy>
  37.  *     <fruits>fruits</fruits>
  38.  *     <vegetable>vegetable</vegetable>
  39.  *   </baz>
  40.  * </foo>
  41.  */
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 28/06/2011, 12:25
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 6
Respuesta: Consulta DomDocument.

Bueno, muchas gracias por la respuesta, aqui lo que hice, para NetBeans:

Código PHP:
class manejadorXML{

// <editor-fold desc="Variables">
/*Contendra los valores para obtener informacion del estado del proceso de apertura y creacion de los archivos.*/
protected $controlInt;
/*Contendra la ruta donde se encuentra el archivo XML.*/
protected $ruta;

/**/
protected $version "1.0";
/**/
protected $encoding "UTF-8";
/**/
protected $crea false;
//</editor-fold>


/**
 *__construct()
 *
 * Descripcion: La variable $iniciado se pone en cero.
 *
 *@param string $ruta variable que indica que permite abrir el archivo, en el caso de que no se requiera
* su apertura inmediata se podria realizar luego, el  valor por default es = "".
* @param bool $crea el valor esta por defecto en false; lo que afecta es que si el archivo no existe se generara posteriormente
* en caso contrario dara un error.
* @return int Devuelve el resultado de la operacion.
 */
function __construct($ruta ""$crea false){
    
$this->controlInt 0// Se inicializa $iniciado con el valor 0

       
if($ruta!="")
       {
           
$this->controlInt $this->setRuta($ruta);
       }


    
$this->crea $crea;

    return 
$this->controlInt;
}

/**
 *function abrirDocumento()
 *
 * Descripcion: Inicialliza un $domDocument.
 *
 *
 *@return int valor del resultado de la operacion realizada, si devuelve 3 la ruta no fue especificada por lo que
* se creo una instancia de objeto que posteriormente debera ser guardado., o no se encontro el archivo, el 2 es correcto.
 */
public function cargarXML(){
//comprueba que se haya cargado un archivo.
       
if($this->controlInt == 1){
           
$this->documento = new DomDocument();       //Inicializa el objeto DomDocument()
           
$this->documento->load($this->ruta);   //Inicializa segun la ruta otorgada.
           
$this->controlInt 2;                      //Si todo salio como se esperaba.
       
}else{
           
$this->documento = new DomDocument($this->version$this->encoding);
           
$this->controlInt 3;
           }

 return 
$this->controlInt;
}


//<editor-fold desc="funciones Elementos">
/**
 *function crearNuevoElemento()
 *
 * Descripcion: Crea un nuevo elemento
 *
 *
 *@param string $nombre         Oblig.    Nombre del nuevo elemento a generar, sera el que se contendra entre '<>'.
 *@param string $valor          No-Oblig. Lo que contendra el nuevo nodo generado, es decir el texto que contendra.
 *@param string $nombreAtributo No-Oblig. En el caso de desear colocar un atributo al nuevo elemento se debe pasar un nombre
 *@param string $atributo       No-Oblig. Valor default es null, si se quiere dar un valor distinto debe pasarse, un argumento distinto.
 *@return   Nodo devuelve la forma de un nodo, para poderlo manipularlo como tal.
 */
public function crearNuevoElemento($nombre$valor ''$nombreAtributo =''$atributo 'null'){
    
$nuevoElemento $this->documento->createElement($nombre); //crea el nuevo elemento.
       
if($valor!=""){
           
$tmp $this->documento->createTextNode($valor); //Si hay valores distinto de nada, lo genera.
           
$nuevoElemento->appendChild($tmp);
           }
       if(
$nombreAtributo!=""){
           
$nuevoElemento $this->documento->setAttribute($nombreAtributo$atributo); //Si se coloco algun nombre para el atributo,
                                                                                        //se procede a generar el atributo en el elemento.
                              
}
    return 
$nuevoElemento//devuelve un nuevo elemento.
}
/**
 *function agregarNodos()
 *
 * Descripcion: Permite a un nodo de origen agregarle otro nodo, o varios nodos,
* si se pasa un array de nodos se pueden incluiran directamente.
 *
 *
 *@param nodo $elementoOrigen Oblig. Es adonde se incluiran todos los demas nodo, o nodo individual.
* @param nodo[] $nuevolElementos Oblig. Puede pasarse un solo nodo, o varios.
 *@return nodo Todos los elementos juntos.
 */
public function agregarNodos($elementoOrigen$nuevosElementos){
if(
count($nuevosElementos)>1){
foreach(
$nuevosElementos as $nuevoElemento){
$elementoOrigen->appendChild($nuevoElemento);
}
}else{
    
$elementoOrigen->appendChild($nuevosElementos);
}
return 
$elementoOrigen;
}

/**
 *function agregarElementosAlDocumento()
 *
 * Descripcion: Agrega el / los elemento(s) al documento, generado
 *
 *
 *@param nodo $nodos       Oblig. Aquello que se desea agregar al documento.
 */
public function agregarElementosAlDocumento($nodos){
    
$this->documento->appendChild($nodos);
}
public function 
guardarXML(){
    
$tmp =  $this->documento->saveXML();
    if((
$this->controlInt 2) || ($this->crea == true)){
    
$this->crearArchivo($tmp);
}
    if(
$this->controlInt == 2){
    
$this->crearArchivo($tmp);
    }
unset(
$tmp);
return 
$this->controlInt;
}
//</editor-fold>
// <editor-fold desc="Propiedades">

/**
 *Property setRuta()
 *
 * Descripcion: Setea la variable $ruta, para poder inicializar el archivo posteriormente.
 *
 *
 *@param string $ruta La ubicacion y el nombre del archivo XML al que se desea acceder, o crear.
 *
 *@return int valor del resultado de la operacion realizada, si devuelve 0 es que no se encontro el archivo, el 1 es correcto.
 */
public function setRuta($ruta){
    
$this->ruta $ruta;
//comprueba si el archivo existe.

    
if(file_exists($ruta)){
           
$this->controlInt 1;  //coloca el valor en uno.
                             
}
   
    return 
$this->controlInt;
}
/**
 *Property setVersion()
 *
 * Descripcion: El default es 1.0.
 *
 *
 *@param string $valor Valor de la version a utilizar el default es 1.0
 */
public function setVersion($valor){
    
$this->version $valor;
}
/**
 *Property getVersion()
 *
 * Descripcion: Devuelve el valor de Version que
 * tendra el archivo
 *
  *@return   string numero de la version del XMl.
 */
public function getVersion(){
    return 
$this->version;
}
/**
 *Property setEncoding()
 *
 * Descripcion: Setea el tipo encoding que soportara el
 * archivo en el caso de que se deba crear. El defaul es UTF-8
 *
 *
 *@param string $valor Tipo de codificacion que soportara el archivo XML.
 */
public function setEncoding($valor){
$this->encoding $valor;
}
/**
 *Property getEnconding()
 *
 * Descripcion: Recupera el valor seteado para la formacion de la etiqueta inicial
 * del archivo que habra que generar.
 *
 *
  *@return  string Devuelve el valor de Encoding que tengamos seteado el default es UTF-8.
 */
public function getEncoding(){
  return 
$this->encoding;
    }

// </editor-fold>

private function crearArchivo($tmp){
 
$this->controlInt 5;
 if(
$this->ruta !=""){
     
$this->ruta ="./xmlTemporal".rand(1,999);
     
$this->controlInt 4;
 }
 
$fp fopen($this->ruta"w");
 
fputs($fp$tmp);
 
fclose($fp);
 unset(
$fp);
 
    }
}
?> 
No probe el que dejaste muchas gracias....

Bueno, lo empece a realizar, y basicamente puedo agregar nodos, a otros nodos, pero como veras no desarrolle absolutamente nada del acceso a los mismos.

Muchisimas gracias.
  #5 (permalink)  
Antiguo 28/06/2011, 12:27
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 6
Respuesta: Consulta DomDocument.

Cita:
Iniciado por abimaelrc Ver Mensaje
Bueno un demo, mientras contestas
Código PHP:
Ver original
  1. <?php
  2. $xml = <<<XML
  3. <foo>
  4.     <bar>
  5.         <candy>candy</candy>
  6.         <fruits>fruits</fruits>
  7.         <vegetable>vegetable</vegetable>
  8.     </bar>
  9.     <baz>
  10.         <candy>candy</candy>
  11.         <fruits>fruits</fruits>
  12.     </baz>
  13. </foo>
  14. XML;
  15. $dom = new DOMDocument();
  16. $dom->preserveWhiteSpace = false;
  17. $dom->formatOutput = true;
  18. $dom->loadXML($xml);
  19. $baz = $dom->getElementsByTagName('baz')->item(0);
  20.  
  21. $vegetable = $dom->createElement('vegetable','vegetable');
  22. $baz->appendChild($vegetable);
  23.  
  24. echo $dom->saveXML();
  25.  
  26. /**
  27.  * Output:
  28.  *<?xml version="1.0"?>
  29.  * <foo>
  30.  *   <bar>
  31.  *     <candy>candy</candy>
  32.  *     <fruits>fruits</fruits>
  33.  *     <vegetable>vegetable</vegetable>
  34.  *   </bar>
  35.  *   <baz>
  36.  *     <candy>candy</candy>
  37.  *     <fruits>fruits</fruits>
  38.  *     <vegetable>vegetable</vegetable>
  39.  *   </baz>
  40.  * </foo>
  41.  */
Entiendo perfectamente, es decir que la recomendacion para acceder a distintos tags es a traves de la funccion getElementByTagName como los de JavaScript.. correcto?... Muchas Gracias Probare por ahi.

Por otro lado:
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

No me queda ninguna duda sobre la primera, es más voy a agregar las propiedades correspondiente, pero la segunda que alcance tiene?...

Por ultimo, se esta haciendo pasa los valores por referencias cuando haces:

$baz = $dom->getElementsByTagName('baz')->item(0);

$vegetable = $dom->createElement('vegetable','vegetable');
$baz->appendChild($vegetable);

echo $dom->saveXML();


Muchas Gracias.

Última edición por PercevalCiro; 28/06/2011 a las 12:43
  #6 (permalink)  
Antiguo 28/06/2011, 13:37
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 6
Respuesta: Consulta DomDocument.

Pongo aca un ejemplo completo... para que entiendas todo lo que me falta...

index.php
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
    <?php
        include 'manejadorXML.php';


        $boj = new manejadorXML("lolo.xml", true);
        $boj->cargarXML();
        
        $nuevoObjeto = $boj->crearNuevoElemento("cuerpo", "");
        $cancion = $boj->crearNuevoElemento("Cancion","Bailando en la sociedad Rural");
        $fecha = $boj->crearNuevoElemento("Fecha","2001");
        $autor = $boj->crearNuevoElemento("Autor", "Alfredo Casero");

        $array_nodo = array($cancion, $fecha, $autor);
        $nuevoObjeto = $boj->agregarNodos($nuevoObjeto, $array_nodo);
        $boj->agregarElementosAlDocumento($nuevoObjeto);
        $boj->guardarXML();
        ?>
    </body>
</html> 


manejadorXML.php
Código PHP:
class manejadorXML{

// <editor-fold desc="Variables">
/*Contendra los valores para obtener informacion del estado del proceso de apertura y creacion de los archivos.*/
protected $controlInt 0;
/*Contendra la ruta donde se encuentra el archivo XML.*/
protected $ruta;

/*el tipo de version que se utilizara, para manipular los XML, por defaul es 1.0*/
protected $version "1.0";
/*el tipo de encofing que utilizaremos para manipular archivos XML, por default es UTF-8*/
protected $encoding "UTF-8";
/**/
protected $crea false;

/**/
protected $espaciosEnBlanco false;
/**/
protected $formatoDeSalida true;
//</editor-fold>

//<editor-fold desc="Metodos Externos -- Principales.">
/**
 *__construct()
 *
 * Descripcion: La variable $iniciado se pone en cero.
 *
 *@param string $ruta variable que indica que permite abrir el archivo, en el caso de que no se requiera
* su apertura inmediata se podria realizar luego, el  valor por default es = "".
* @param bool $crea el valor esta por defecto en false; lo que afecta es que si el archivo no existe se generara posteriormente
* en caso contrario dara un error.
* @return int Devuelve el resultado de la operacion.
 */
function __construct($ruta ""$crea false){
  
   
$this->controlInt $this->setRuta($ruta);
   
$this->crea $crea;

   return 
$this->controlInt;
}

/**
 *function abrirDocumento()
 *
 * Descripcion: Inicialliza un $domDocument.
 *
 *
 *@return int valor del resultado de la operacion realizada, si devuelve 3 la ruta no fue especificada por lo que
* se creo una instancia de objeto que posteriormente debera ser guardado., o no se encontro el archivo, el 2 es correcto.
 */
public function cargarXML(){
//comprueba que se haya cargado un archivo.
       
if($this->controlInt == 1){
           
$this->documento = new DomDocument();       //Inicializa el objeto DomDocument()
           
$this->configurarXML();
           
$this->documento->load($this->ruta);   //Inicializa segun la ruta otorgada.
           
$this->controlInt 2;                      //Si todo salio como se esperaba.
       
}else{
           
$this->documento = new DomDocument($this->version$this->encoding);
           
$this->controlInt 3;
           
$this->configurarXML();
           }
 
 return 
$this->controlInt;
}

/**
  *function guardarXML()
  *
  * Descripcion:
  *
  *
  *@return   int valor del resultado de la operacion.
  */
public function guardarXML(){
    
$tmp =  $this->documento->saveXML();
    if((
$this->controlInt 2) || ($this->crea == true)){
    
$this->crearArchivo($tmp);
}
    if(
$this->controlInt == 2){
    
$this->crearArchivo($tmp);
    }
unset(
$tmp);
return 
$this->controlInt;
}
//</editor-fold>
//
//<editor-fold desc="Metodos Externos -- Elementos">
/**
 *function crearNuevoElemento()
 *
 * Descripcion: Crea un nuevo elemento
 *
 *
 *@param string $nombre         Oblig.    Nombre del nuevo elemento a generar, sera el que se contendra entre '<>'.
 *@param string $valor          No-Oblig. Lo que contendra el nuevo nodo generado, es decir el texto que contendra.
 *@param string $nombreAtributo No-Oblig. En el caso de desear colocar un atributo al nuevo elemento se debe pasar un nombre
 *@param string $atributo       No-Oblig. Valor default es null, si se quiere dar un valor distinto debe pasarse, un argumento distinto.
 *@return   Nodo devuelve la forma de un nodo, para poderlo manipularlo como tal.
 */
public function crearNuevoElemento($nombre$valor ''$nombreAtributo =''$atributo 'null'){
    
$nuevoElemento $this->documento->createElement($nombre); //crea el nuevo elemento.
       
if($valor!=""){
           
$tmp $this->documento->createTextNode($valor); //Si hay valores distinto de nada, lo genera.
           
$nuevoElemento->appendChild($tmp);
           }
       if(
$nombreAtributo!=""){
           
$nuevoElemento $this->documento->setAttribute($nombreAtributo$atributo); //Si se coloco algun nombre para el atributo,
                                                                                        //se procede a generar el atributo en el elemento.
                              
}
    return 
$nuevoElemento//devuelve un nuevo elemento.
}
/**
 *function agregarNodos()
 *
 * Descripcion: Permite a un nodo de origen agregarle otro nodo, o varios nodos,
* si se pasa un array de nodos se pueden incluiran directamente.
 *
 *
 *@param nodo $elementoOrigen Oblig. Es adonde se incluiran todos los demas nodo, o nodo individual.
* @param nodo[] $nuevolElementos Oblig. Puede pasarse un solo nodo, o varios.
 *@return nodo Todos los elementos juntos.
 */
public function agregarNodos($elementoOrigen$nuevosElementos){
if(
count($nuevosElementos)>1){
foreach(
$nuevosElementos as $nuevoElemento){
$elementoOrigen->appendChild($nuevoElemento);
}
}else{
    
$elementoOrigen->appendChild($nuevosElementos);
}
return 
$elementoOrigen;
}

/**
 *function agregarElementosAlDocumento()
 *
 * Descripcion: Agrega el / los elemento(s) al documento, generado
 *
 *
 *@param nodo $nodos       Oblig. Aquello que se desea agregar al documento.
 */
public function agregarElementosAlDocumento($nodos){
    
$this->documento->appendChild($nodos);
}

//</editor-fold>

// <editor-fold desc="Propiedades">

/**
 *Property setRuta()
 *
 * Descripcion: Setea la variable $ruta, para poder inicializar el archivo posteriormente.
 *
 *
 *@param string $ruta La ubicacion y el nombre del archivo XML al que se desea acceder, o crear.
 *
 *@return int valor del resultado de la operacion realizada, si devuelve 0 es que no se encontro el archivo, el 1 es correcto.
 */
public function setRuta($ruta){
    
$this->ruta $ruta;
//comprueba si el archivo existe.

    
if(file_exists($ruta)){
           
$this->controlInt 1;  //coloca el valor en uno.
                             
}
   
    return 
$this->controlInt;
}
/**
 *Property setVersion()
 *
 * Descripcion: El default es 1.0.
 *
 *
 *@param string $valor Valor de la version a utilizar el default es 1.0
 */
public function setVersion($valor){
    
$this->version $valor;
}
/**
 *Property getVersion()
 *
 * Descripcion: Devuelve el valor de Version que
 * tendra el archivo
 *
  *@return   string numero de la version del XMl.
 */
public function getVersion(){
    return 
$this->version;
}
/**
 *Property setEncoding()
 *
 * Descripcion: Setea el tipo encoding que soportara el
 * archivo en el caso de que se deba crear. El defaul es UTF-8
 *
 *
 *@param string $valor Tipo de codificacion que soportara el archivo XML.
 */
public function setEncoding($valor){
$this->encoding $valor;
}
/**
 *Property getEnconding()
 *
 * Descripcion: Recupera el valor seteado para la formacion de la etiqueta inicial
 * del archivo que habra que generar.
 *
 *
  *@return  string Devuelve el valor de Encoding que tengamos seteado el default es UTF-8.
 */
public function getEncoding(){
  return 
$this->encoding;
    }

/**
  *Propery setESpaciosEnBlanco()
  *
  * Descripcion: modificacion del valor para cuando
 * se haga la configuracion, por default esta en false
  *
  *
  *@param bool $valor valor true o false
  */
public function setEspaciosEnBlanco($valor){
    
$this->espaciosEnBlanco $valor;
}
/**
  *Property setFormatoDeSalida()
  *
  * Descripcion:
  *
  *
  *@param bool $valor valor true o false
  */
public function setFormatoDeSalida($valor){
    
$this->formatoDeSalida $valor;
}
// </editor-fold>

//<editor-fold desc="Metodos Internos">
/**
  *function crearArchivo()
  *
  * Descripcion: Genera un el archivo dependiendo
  *
  *
  *@param <TipoDatos> $<Variable> <Descripcion>
  *@return   <TipoDatos> <Descripcion>
  */
private function crearArchivo($tmp){
 
$this->controlInt 5;
 if(
$this->ruta ==""){
     
$this->ruta ="./xmlTemporal".rand(1,999);
     
$this->controlInt 4;
 }
 
$fp fopen($this->ruta"w");
 
fputs($fp$tmp);
 
fclose($fp);
 unset(
$fp);

    }
/**
*function configurarXML()
*
* Descripcion: Configura el Objeto DomDocument, con aquellos parametros
* que se hayan asignado.
*
*/  
private function configurarXML(){
   
$this->documento->preserveWhiteSpace $this->espaciosEnBlanco;
   
$this->documento->formatOutput $this->formatoDeSalida;
}
//</editor-fold>
}?> 

Me faltaria corregir un par de cosas mas... si tienes alguna sugerencia seria genial!!!....
Muchas Gracias, espero que no parezca mucha molestia,
  #7 (permalink)  
Antiguo 28/06/2011, 14:49
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, 10 meses
Puntos: 1517
Respuesta: Consulta DomDocument.

Cita:
Iniciado por PercevalCiro Ver Mensaje
Entiendo perfectamente, es decir que la recomendacion para acceder a distintos tags es a traves de la funccion getElementByTagName como los de JavaScript.. correcto?... Muchas Gracias Probare por ahi.
Eso depende. Puedes usar getElementsByTagName o getElementsById si le indicas un id a cada tag.

Cita:
Iniciado por PercevalCiro Ver Mensaje
Por otro lado:
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

No me queda ninguna duda sobre la primera, es más voy a agregar las propiedades correspondiente, pero la segunda que alcance tiene?...
El primero es si se desea preservar los espacios como los creaste. Como no me interesa eso, sino que DOM lo haga por mi, le indico que no los preserve sino que los una y luego con formatOutput le digo que cree el formato, si miras el código fuente verás lo que te quiero decir,

Cita:
Iniciado por PercevalCiro Ver Mensaje
Por ultimo, se esta haciendo pasa los valores por referencias cuando haces:

$baz = $dom->getElementsByTagName('baz')->item(0);

$vegetable = $dom->createElement('vegetable','vegetable');
$baz->appendChild($vegetable);

echo $dom->saveXML();


Muchas Gracias.
Esto no lo entendí.
__________________
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 28/06/2011, 14:49
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, 10 meses
Puntos: 1517
Respuesta: Consulta DomDocument.

Muestra el xml y di lo que quieres hacer exactamente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 28/06/2011, 14:58
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 6
Respuesta: Consulta DomDocument.

Antes que nada, muchas gracias.

Es una clase, no hay algo en particular, quiero lograr que sea bastante manipulable, y facilmente.

Entonces queria saber cual era la forma mas recomendable de acceder para crear una funcion.

Lo que me decias que no entendias es que cuando modificas la variable, modificas el valor del objeto eso implica que esta por referencia la variable y no por valor. Lo que preguntaba es si me equivoco:
ejemplo:

$var1 = 1;
$var2 = $var1;

y ahora modifico el valor var2:

$var2 = 3;
echo "Probando ".var1;

y si el resultado es:

Probando 3

es porque fue por referencia.

Otra Vez gracias, y no tiene tampoco mucho sentido mi pregunta.

No quiero hacer nada particular.
  #10 (permalink)  
Antiguo 28/06/2011, 16:15
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, 10 meses
Puntos: 1517
Respuesta: Consulta DomDocument.

Sinceramente, no veo porque crear una clase que hace casi exactamente igual que lo que hace la clase de DOM de por si. Ahora pasar por referencia ya un objeto trabaja bien similar a referencia. Pero aún puedes usar referencias en otras variables como por ejemplo
Código PHP:
Ver original
  1. $var1 = 1;
  2. $var2 &= $var1;
  3. $var1 = 2;
  4. echo $var2; // imprime 2
Aún así estoy medio perdido en lo que quieres hacer, pero ya indicaste que no tiene mucho sentido tu pregunta.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 28/06/2011, 17:55
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 8 meses
Puntos: 6
Respuesta: Consulta DomDocument.

Te parece?, en realidad la idea es ir agrandándola esa para mi es la estructura, principalmente por acelerar el código. Poder crear funciones que le den robustez y poder utilizar menos código, y lograr seguridad. Yo no soy un viejo programador de PHP, por el contrario, es la primera vez que programo con POO, en PHP.

Para vos no es conveniente programar de esta manera?...

Me quedo clarisimo lo de referencia.

Muchas Gracias. Saludos.
  #12 (permalink)  
Antiguo 28/06/2011, 19:54
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, 10 meses
Puntos: 1517
Respuesta: Consulta DomDocument.

A lo que me estoy refiriendo es que si quieres puedes extender, pero creando adiciones, no repitiendo código que ya está en la clase de DOM.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: domdocument, 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 07:55.