Page 2 of 5

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Thu Aug 22, 2013 8:38 am
by brujoMX
si ya lo tengo todo eso montado, aceptan como primer parametro al ID del fichero cargado, solo que estaba usando ya la STL xD
lo voy a cambiar, gracias CicTec

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Thu Aug 22, 2013 8:41 am
by CicTec
Bien, de nada. :)

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Sat Aug 24, 2013 2:26 pm
by erkosone
Sabes lo que estaría super genial? ya que tienes este modulo que aporta casi lo que hace falta para la codificación json..
Si montases unas funciones extra o incluso en un modulo por separado.. para accesar a la información de una trama json sería la leche brujo.

osea, un constructor de un nuevo objeto json en memoria, e ir añadiendo secuencialmente nombres de campos y valores, y por supuesto un decodificador como los clásicos: getElementByName(), sería la repera tener esto.

Disculpa por el offtopic de tu modulo, pero no he podido contenerme , tenía que comentartelo jeje.
Por cierto, gracias por compartir ;)

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Mon Aug 26, 2013 4:10 pm
by brujoMX
Hola, gracias por la sugerencia, pero le traigo ganas a un modulo con sqlite a ver que tan factible es.
Bueno pero les dejo una nueva beta con monton de funciones, el problema de los nombres repetidos ya solucionado, y la carga de N numero de documentos xml, ojala lo puedan probar pues la vdd no me da tiempo para crear el modulo y testearlo bien, esta actualizado el tema principal con la nueva beta.

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Mon Aug 26, 2013 7:05 pm
by CicTec
Hola brujoMX,

Estoy probando el modulo, te pongo mi opinion y sugerencia sobre algunos puntos:
- La funcion XML_GetElement:
INT XML_GetElement(INT document, XMLElement *e, STRING path)
Actualmente la usas asi:
Source Code (Gemix) [ Download ] [ Hide ]
  • XML_GetElement(document, &eResolution, "NoName.desktop");
  • XML_GetElement(document, &eActor, "NoName.actor");
  •  

Seria mas "comoda" y intuitiva si fuera asi:
XMLElement *XML_GetElement(INT document, STRING path)
Para poderla usar asi:
Source Code (Gemix) [ Download ] [ Hide ]
  • eResolution = XML_GetElement(document, "NoName.desktop");
  • eActor = XML_GetElement(document, "NoName.actor");
  •  


- La funcion XML_DeleteSon:
INT XML_DeleteSon(XMLElement *e, STRING son_name)
INT XML_DeleteSon(XMLElement *e, INT flag) -> (overload 1)
Si flag vale XML_ALL_ELEMENTS se eliminan todos los hijos del element e.


Si flag no vale XML_ALL_ELEMENTS que pasaria ?

Creo que una mejor API seria asi:
INT XML_DeleteSon(XMLElement *e)
INT XML_DeleteSon(XMLElement *e, STRING son_name) -> (overload 1)

Y tener esas posibilidades de codigo:
Source Code (Gemix) [ Download ] [ Hide ]
  • xml_deleteson(eResolution); // elimino todos los hijos del elemento "eResolution"
  • xml_deleteson(eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution"
  •  
  • xml_deleteson(xml_all_element); // elimino todos los hijos de todos los elementos -> problema, lo hace solo para un documiento, cual ?
  • xml_deleteson(xml_all_element, "blabla"); // elimino el hijo "blabla" de todos los elementos -> problema, lo hace solo para un documiento, cual ?
  •  

Como se vee, el ejemplo esta bien sino fuera que si usamos XML_ALL_ELEMENT, solo afecta a un documento, pero cual ?, quizas estaria bien que las funcion XML_DeleteSon tenga otro parametro (INT document) que identifique el documento.

- XML_unload:
Falta la referencia en el TXT.

- Plataformas:
Actualmente el modulo esta disponible solo para windows, tienes pensado porting a Linux y Mac ?

Por ahora es todo.

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Mon Aug 26, 2013 7:33 pm
by brujoMX
Gracias CicTec voy a hacerlo como me sugieron sobres los Get,
el

XML_DeleteSon(), borra todos los hijos del elemento que se le pase como parametro, del documento al cual pertenece ese elemento, cada XMLElement tiene un ID que le dice a que documento pertenece, por eso no es necesario pasarlo como parametro, pero si tu lo crees necesario asi lo hago.

voy a modicar esas cosas y agregar 2 funciones mas y subirlo, sobre el porting, si, tengo pensado portarlo a linux y mac.

Gracias por las sugerencias =)

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Mon Aug 26, 2013 8:05 pm
by CicTec
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:
Source Code (Gemix) [ Download ] [ Hide ]
  • 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.

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Tue Aug 27, 2013 8:31 pm
by brujoMX
Hola CicTec, necesito alguna segurencia
Si regreso un puntero a los elementos tendria que crear de forma dinamica el elemento dentro de la funcion, entonces pensaba hacer una especie de pool para al finalizar eliminar todos los elementos creados cn malloc, o tendia pensado hacer algo asi: XML_FreeElement(XMLElement *), y dejar al usuario que la liberara

tu que opinas?

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Tue Aug 27, 2013 8:52 pm
by CicTec
No es buena idea, mejor que el sistema lo gestione la lib para evitar memory leaks y complicar el usuario.
Yo la dejaria tal como esta.
Cual es el problema en devolver con Get en lugar de pasarle un parametro puntero ?

Re: [MODULE] GMXEXT_mod_xml beta

PostPosted: Tue Aug 27, 2013 9:30 pm
by brujoMX
Code: Select all
GMXvoid GMXEXT_XmlGetRootElement() {
   SDK_GetDocument();
   SDK_XMLElement root;    //// = (SDK_XMLElement *)malloc(sizeof(SDK_XMLElement));
   
   if (doc != NULL) {
      XMLElement *src = doc->RootElement();
      if (src != NULL) {
         SDK_FillElement(XMLDocumentID, &root, src);
         GMXAPI_RetIntValue(int(&root));
      }
   }

   GMXAPI_RetIntValue(SDK_RET_ERROR);
}


me podrias indicar si esa es la forma correcta de regresar la referencia a gemix?