[Kde-devel-es] QDom y eliminar elementos

Albert Astals Cid tsdgeos at yahoo.es
Sun Feb 27 20:52:13 CET 2005


No lo he probado y no estoy seguro, pero yo diria que lo que tienes que hacer 
es recorrer el arbol hasta encontrar el nodo que quieres eliminar y entonces 
llamar a removeChild con ese nodo, no crear un nodo igual que el que quieres 
eliminar y usar eso nodo para eliminar el otro, no se si me explico.

Albert

A Diumenge 27 Febrer 2005 17:56, Carles Pina i Estany va escriure:
> 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!



More information about the Kde-devel-es mailing list