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.