CicTec wrote:De nada.
Pues si ya el elemento tiene el ID del documento al cual pertenece ok, el problema es que si le pasa XML_ALL_ELEMENTS no se sabe a cual documento eliminar todos los elementos, por eso se necesita el parametro "document", sino debes eliminar la opcion XML_ALL_ELEMENTS
Yo haria asi:
INT XML_DeleteSon(INT document, XMLElement *e)
INT XML_DeleteSon(INT document, XMLElement *e, STRING son_name) -> (overload 1)
Con este uso:
xml_deleteson(document, eResolution); // elimino todos los hijos del elemento "eResolution" del documento "document" xml_deleteson(document, eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution" del documento "document" xml_deleteson(document, XML_ALL_ELEMENTS); // elimino todos los elementos y hijos del documento "document" xml_deleteson(document, XML_ALL_ELEMENTS, "blabla"); // elimino todos los hijos "blabla" de todos los elementos del documento "document"
Por cierto, para poder pasar XML_ALL_ELEMENTS al parametro "XMLElement *e", esta debe tener el valor 0, sino el compilador dara error en la llamada, mientra como 0 seria interpretado como si se pasase "null" o un puntero nulo y internamente lo puedes tratar como caso especial.
brujoMX wrote:para las funciones
INT XML_GetAttribute(XMLElement *e, STRING attribute, INT *v)
INT XML_GetAttribute(XMLElement *e, STRING attribute, FLOAT *v)
INT XML_GetAttribute(XMLElement *e, STRING attribute, STRING *v)
te parece bien que las deje asi con sus overloads o seria mejor hacer algo como:
INT XML_GetIntAttribute(XMLElement *e, STRING attribute)
FLOAT XML_GetFloatAttribute(XMLElement *e, STRING attribute)
STRING XML_GetStringAttribute(XMLElement *e, STRING attribute)
brujoMX wrote:CicTec wrote:De nada.
Pues si ya el elemento tiene el ID del documento al cual pertenece ok, el problema es que si le pasa XML_ALL_ELEMENTS no se sabe a cual documento eliminar todos los elementos, por eso se necesita el parametro "document", sino debes eliminar la opcion XML_ALL_ELEMENTS
Yo haria asi:
INT XML_DeleteSon(INT document, XMLElement *e)
INT XML_DeleteSon(INT document, XMLElement *e, STRING son_name) -> (overload 1)
Con este uso:
xml_deleteson(document, eResolution); // elimino todos los hijos del elemento "eResolution" del documento "document" xml_deleteson(document, eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution" del documento "document" xml_deleteson(document, XML_ALL_ELEMENTS); // elimino todos los elementos y hijos del documento "document" xml_deleteson(document, XML_ALL_ELEMENTS, "blabla"); // elimino todos los hijos "blabla" de todos los elementos del documento "document"
Por cierto, para poder pasar XML_ALL_ELEMENTS al parametro "XMLElement *e", esta debe tener el valor 0, sino el compilador dara error en la llamada, mientra como 0 seria interpretado como si se pasase "null" o un puntero nulo y internamente lo puedes tratar como caso especial.
Si mira, los 2 primeros XML_DeleteSon no necesitan pasar el document, pues ya va incluido en el elemento que se le pasa por parametro.
Las otras 2 overloads las voy a implementar muchas gracias por la sugerencia, solo que no entendi nada eso que me dijiste de la constante XML_ALL_ELEMENTS, me puedes explicar con un poco mas de detalle?
root = XML_GetRootElement(document);
XML_DeleteElement(root, XML_ALL_ELEMENTS);
Users browsing this forum: No registered users and 8 guests