2008-10-22 47 views
3

我试图解码来自诺基亚N95的WBXML编码的SyncML消息。 我的第一次尝试是使用python pywbxml模块,它将调用封装到libwbxml中。用这个解码消息给了很多<未知的>标签和一个<收藏>标签中的一大块二进制。我试着自己运行<Collection>的内容,但是失败了。有什么我失踪?解码来自S60设备的WBXML SyncML消息

此外,有没有人知道的纯粹的Python的wbxml解析器的实现?如果没有一个命令行或在线工具来解码这些消息将是有用的 - 这将使我更容易编写自己的...

回答

1

我最终自己写了一个Python解析器。我设法遵循这里的规范: http://www.w3.org/TR/wbxml/

然后从horde.org cvs中获取代码表。

开放移动联盟的网站和文档是可怕的,这是一个非常艰难的项目:(

1

有趣的是,我一直在研究同样的问题。我在编写我自己的纯Python WBXML解析器时已经过了一半时间,但它还不够完善,无法使用,而且现在我几乎没有时间去处理它。

那些<未知>标记可能是因为pywbxml/libwbxml没有加载正确的标记词汇表。 WBXML通过索引编号表示标签以避免传输相同标签名称数百次,并且将索引编号映射到标签名称的表必须与WBXML文档本身分开提供。从模糊的一瞥the libwbxml source似乎libwbxml有一堆硬编码的标记表。它具有SyncML 1.0-1.2的表格;我认为我的诺基亚E71发送SyncML 1.3(如果是这样,你的N95可能也会这样做),它看起来像libwbxml还不支持。

让它起作用可能与向libwbxml添加SyncML 1.3表一样简单。也就是说,上次我尝试过,pywbxml不会针对香草libwbxml源文件进行编译,所以您必须先应用一些补丁...所以“简单”可能是一个相对术语。

0

我用pywbxml, 在pywbxml.pyx只是需要一个补丁:

在功能wbxml2xml周围line 25params.lang设置为:

params.lang = WBXML_LANG_UNKNOWN 

的工作方式就像魅力一样。将WBXMLParseError的基类更改为异常帮助:

class WBXMLParseError(Exception):