[MODULE] GMXEXT_mod_xml

Extensiones oficiales y no para expander el lenguaje Gemix.

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Thu Aug 22, 2013 8:38 am

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
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Thu Aug 22, 2013 8:41 am

Bien, de nada. :)
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby erkosone » Sat Aug 24, 2013 2:26 pm

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 ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Mon Aug 26, 2013 4:10 pm

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.
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Mon Aug 26, 2013 7:05 pm

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Mon Aug 26, 2013 7:33 pm

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 =)
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Mon Aug 26, 2013 8:05 pm

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 8:31 pm

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?
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Tue Aug 27, 2013 8:52 pm

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 ?
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 9:30 pm

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?
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

PreviousNext

Return to Extensiones Gemix

Who is online

Users browsing this forum: No registered users and 2 guests