[Kde-devel-es] QDom y eliminar elementos

Carles Pina i Estany carles at pinux.info
Sun Feb 27 17:56:10 CET 2005


Hola,

Parece que estos dias sólo hago que enviar preguntas a la lista (y
además de Qt), mis disculpas... ya habrá épocas que contestaré :-)

Voy al grano: tengo una aplicación que trata con ficheros XML usando
QDom pero me daba unos problemas reemplazando unos elementos (y
eliminando1) , y he hecho una prueba sencilla aparte.

Tengo este fichero .xml de prueba (ya sé que no es perfecto):

<!DOCTYPE agenda>
<agenda>
 <persona tlf="adeu" name="carles" />
 <persona tlf="hola" name="hola" />
</agenda>

Para probar de guardar nombre-tlf.

Desde la aplicación sin problemas puedo leer todo, buscar, o añadir.

Para empezar a jugar lo abro mediante:

 QDomDocument doc;

 QFile file("test.xml");
 doc.setContent(&file);
 file.close();  

Para eliminar elementos que NO funciona hago:

--------
  QDomElement root=doc.documentElement();
  QDomElement cn_new=doc.createElement("persona");
  QDomNode t;

  cn_new=doc.createElement("persona");
  cn_new.setAttribute("name",nomnou);
  cn_new.setAttribute("tlf",tlfnou);

  t=root.removeChild(cn_new);

  printf("t es nul? %d\n",t.isNull());
--------
Da que es null (1)

Sin embargo, para añadir elementos:
--------
  printf("Afegir\n");
  QDomElement root=doc.documentElement();
  QDomElement cn_new=doc.createElement("persona");

  cn_new=doc.createElement("persona");
  cn_new.setAttribute("name",nomnou);
  cn_new.setAttribute("tlf",tlfnou);

  root.appendChild(cn_new);
--------

El código es el mismo cambiando appendChild por removeChild.

Seguro que nomnou y tlfnou son exactamente lo mismo (viene de una
editLine y no la he modificado).

El remplaceChild tampoco va (parece de hecho que no encuentra el Child),
y el insertAfter, etc. tampoco va.

Sin embargo el añadir funciona correctamente.

Alguien ve algo incorrecto? Yo creo que tiene que ser un fallo garrafal
y muy tonto :-) y que ahora no lo veo, porqué vaya, no puede ser
complicado...

1000 gracias!

-- 
Carles Pina i Estany		GPG id: 0x8CBDAE64
	http://pinux.info


More information about the Kde-devel-es mailing list