Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/06/2011, 12:25
PercevalCiro
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 14 años, 9 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.