2008-10-22 6 views
3

J'essaie de décoder un message SyncML codé en WBXML à partir d'un Nokia N95. Ma première tentative a été d'utiliser le module pywbxml de python qui encapsule les appels à libwbxml. Décoder le message avec ceci a donné beaucoup de < étiquettes inconnues > et un gros morceau de binaire dans une étiquette <Collection>. J'ai essayé d'exécuter le contenu de la <Collection> par lui-même, mais il a échoué. Y a-t-il quelque chose qui me manque?Décodage d'un message WBXML SyncML à partir d'un périphérique S60

De même, est-ce que quelqu'un connaît une implémentation python pure d'un analyseur wbxml? A défaut d'une ligne de commande ou d'un outil en ligne pour décoder ces messages serait utile - il me serait beaucoup plus facile d'écrire le mien ...

Répondre

1

J'ai fini par écrire un analyseur python moi-même. J'ai réussi à le faire en suivant les spécifications ici: http://www.w3.org/TR/wbxml/

Et puis en prenant les tables de code de la horde.org cvs.

Le site de l'Open Mobile Alliance et la documentation sont terribles, cela a été un projet très éprouvante :(

1

Curieusement, j'ai travaillé sur le même problème. Je suis à mi-chemin de l'écriture de mon propre parseur Python WBXML pur, mais il n'est pas encore assez complet pour être utile, et j'ai très peu de temps pour y travailler maintenant.

Ces < étiquettes inconnues > peuvent être parce que pywbxml/libwbxml n'a pas le bon vocabulaire de tag chargé. WBXML représente les balises par un numéro d'index pour éviter de transmettre le même nom de balise des centaines de fois, et la table qui met en correspondance les numéros d'index avec les balises doit être fournie séparément du document WBXML lui-même. D'un vague coup d'œil au the libwbxml source, il semble que libwbxml ait un tas de tables de balises codées en dur. Il a des tables pour SyncML 1.0-1.2; Je pense que mon Nokia E71 envoie SyncML 1.3 (si c'est le cas, votre N95 le fait probablement aussi), ce qui semble être le cas pour libwbxml. Le faire fonctionner pourrait être aussi simple que d'ajouter une table SyncML 1.3 à libwbxml. Cela dit, la dernière fois que j'ai essayé, pywbxml ne compile pas avec la source de libwbxml de vanilla, donc vous devez d'abord appliquer quelques patches ... donc "simple" peut être un terme relatif.

0

je pywbxml, Juste besoin d'un patch pywbxml.pyx:

params.lang en fonction wbxml2xml autour line 25 modifiee:.

params.lang = WBXML_LANG_UNKNOWN 

fonctionne comme le charme changeant aussi classe de base pour WBXMLParseError à exception aide:

class WBXMLParseError(Exception): 
Questions connexes