Pregunta

Estoy intentando decodificar un mensaje SyncML codificado WBXML de un Nokia N95. Mi primer intento fue usar el módulo python pywbxml que envuelve las llamadas a libwbxml. Decodificar el mensaje con esto dio mucho & Lt; unknown & Gt; etiquetas y una gran parte de binario dentro de < Collection > etiqueta. Intenté ejecutar el contenido de & Lt; Collection & Gt; a través de sí mismo pero falló. ¿Hay algo que me falta?

Además, ¿alguien sabe de una implementación pura de Python de un analizador wbxml? Si no es útil una línea de comando o una herramienta en línea para decodificar estos mensajes, me sería mucho más fácil escribir el mío ...

¿Fue útil?

Solución 2

Terminé escribiendo un analizador de python. Logré hacerlo siguiendo las especificaciones aquí: http://www.w3.org/TR/wbxml/

Y luego tomando las tablas de códigos de los cvs de horde.org.

El sitio y la documentación de la alianza móvil abierta son terribles, este fue un proyecto muy difícil :(

Otros consejos

Curiosamente, he estado trabajando en el mismo problema. Estoy a mitad de camino de escribir mi propio analizador WBXML de Python puro, pero aún no está lo suficientemente completo como para ser útil, y tengo muy poco tiempo para trabajar en este momento.

Esos < Desconocido > Las etiquetas pueden deberse a que pywbxml / libwbxml no tiene cargado el vocabulario de etiquetas correcto. WBXML representa las etiquetas mediante un número de índice para evitar transmitir el mismo nombre de etiqueta cientos de veces, y la tabla que asigna los números de índice a los nombres de etiquetas debe proporcionarse por separado del documento WBXML. De una mirada vaga a la fuente libwbxml parece libwbxml tiene un montón de tablas de etiquetas codificadas. Tiene tablas para SyncML 1.0-1.2; Creo que mi Nokia E71 envía SyncML 1.3 (si es así, su N95 probablemente también lo haga), lo que parece que libwbxml aún no es compatible.

Hacer que funcione puede ser tan simple como agregar una tabla SyncML 1.3 a libwbxml. Dicho esto, la última vez que lo intenté, pywbxml no se compila contra la fuente vanwill libwbxml, por lo que primero debe aplicar algunos parches ... así que & Quot; simple & Quot; puede ser un término relativo.

Utilicé pywbxml , Solo necesitaba un parche en pywbxml.pyx:

params.lang en la función wbxml2xml alrededor de línea 25 establecida en:

params.lang = WBXML_LANG_UNKNOWN

funciona como encanto. También ayuda cambiar la clase base para WBXMLParseError a excepción:

class WBXMLParseError(Exception):
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top