TL;RD
¿Cuál es la mejor manera de usar exificient-grammar para generar un archivo GRS desde un XSD, que se puede usar con exificient-for-javascript?
--
Estoy desarrollando un servidor TCP con Nodejs. Los clientes envían datos en formato EXI. Tengo los esquemas XSD y me gustaría convertir esos bytes, en formato EXI, a JSON o similar.
Para trabajar con exificient-for-javascript , necesito generar el archivo GRS con la biblioteca exificient-grammars . Nunca he trabajado con Java, pero entiendo que esta biblioteca no tiene un ejecutable CLI, pero puedes importarlo en tu proyecto y usarlo. He intentado crear un proyecto java y usando maven estoy cargando las bibliotecas. Logro ejecutar el proyecto pero mi poco conocimiento de Java me está haciendo perder mucho tiempo con esto. En resumen, no puedo generar el archivo GRS. Mi código java (ver comentario "y ahora, cómo..."):
public class Parser { Grammars grammar; public void parse() { System.out.println("Hello from parser"); try { grammar = GrammarFactory.newInstance().createGrammars("VALID_ABSOLUTE_SYSTEM_PATH_TO_XSD"); // and now, how to generate an output GRS file??? } catch (Exception e) { System.out.println(e.getMessage()); } } }Por otro lado, el proyecto exificient proporciona un ejecutable para convertir EXI a XML y viceversa, sin embargo, en mi aplicación Nodejs obtengo un búfer (una matriz de int8). Se me ocurre que podría generar un archivo binario desde Nodejs y procesarlo con el ejecutable eficiente en segundo plano (exec/spawn), pero esto me parece un poco exagerado.
La clase Grammars2JSON es lo que estás buscando.
Esta clase se puede llamar desde la línea de comando pasando el XSD como entrada. Crea el archivo de gramáticas JSON correspondiente.