2008-10-22 6 views
3

Я пытаюсь декодировать сообщение SyncML с кодировкой WBXML с Nokia N95. Моя первая попытка состояла в использовании модуля pywbxml python, который завершает вызовы libwbxml. Декодирование сообщения с этим дало много < неизвестных > теги и большой кусок двоичного кода в коллекции < > тег. Я попытался запустить содержимое <Collection> сам по себе, но это не удалось. Есть что-то, что мне не хватает?Декодирование сообщения WBXML SyncML с устройства S60

Кроме того, знает ли кто-нибудь о чистой реализации python анализатора wbxml? В противном случае было бы полезно использовать командную строку или онлайн-инструмент для декодирования этих сообщений - мне было бы намного легче написать свой собственный ...

ответ

1

Я закончил тем, что написал парсер python. Мне удалось это сделать, следуя спецификации здесь: http://www.w3.org/TR/wbxml/

И затем, взяв таблицы кодов от horde.org cvs.

-сайт Open Mobile Alliance и документация ужасны, это был очень Trying проект :(

1

Как ни странно, я работал над той же проблемой. Я нахожусь на полпути, написав свой собственный синтаксический анализатор Python WBXML, но он еще недостаточно для того, чтобы быть полезным, и у меня очень мало времени для работы над ним прямо сейчас.

Теги < Неизвестно > Теги могут быть связаны с тем, что у pywbxml/libwbxml нет нужного словарного запаса. WBXML представляет теги по номеру индекса, чтобы избежать одновременной передачи одного и того же имени тега, а таблица, которая сопоставляет номера индексов с именами тегов, должна предоставляться отдельно от самого документа WBXML. С неопределенным взглядом на the libwbxml source кажется, что у libwbxml есть куча таблиц тегов, жестко закодированных. Он имеет таблицы для SyncML 1.0-1.2; Я думаю, что мой Nokia E71 отправляет SyncML 1.3 (если это так, вероятно, и ваш N95), что похоже на libwbxml пока не поддерживается.

Получение его работы может быть таким же простым, как добавление таблицы SyncML 1.3 в libwbxml. Тем не менее, в прошлый раз, когда я пытался, pywbxml не компилируется с источником vanilla libwbxml, поэтому вам сначала нужно применить некоторые исправления ... так что «простой» может быть относительным термином.

0

Я использовал pywbxml, Просто нужен один патч в pywbxml.pyx:

params.lang в функции wbxml2xml вокруг line 25 значение:.

params.lang = WBXML_LANG_UNKNOWN 

работ как шарм Также меняется базовый класс для WBXMLParseError для исключения помогает:

class WBXMLParseError(Exception):