解码来自S60设备的WBXML SyncML消息

时间:2008-10-22 15:25:01

标签: python s60 syncml wbxml

我正在尝试解码来自诺基亚N95的WBXML编码的SyncML消息。 我的第一次尝试是使用python pywbxml模块来封装对libwbxml的调用。用这个解码消息给了很多< unknown>标签和< Collection>中的一大块二进制文件标签。我尝试运行< Collection>的内容通过自己,但它失败了。有什么我想念的吗?

另外,有没有人知道wbxml解析器的纯python实现?如果没有命令行或在线工具来解码这些消息会很有用 - 这会让我更容易编写自己的...

3 个答案:

答案 0 :(得分: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不会对vanilla libwbxml源进行编译,所以你必须首先应用一些补丁......所以“简单”可能是一个相对的术语。

答案 1 :(得分:1)

我自己最终编写了一个python解析器。我按照这里的规范设法做到了: http://www.w3.org/TR/wbxml/

然后从horde.org cvs。

获取代码表

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

答案 2 :(得分:0)

我使用了pywbxml, 只需要pywbxml.pyx中的一个补丁:

位于line 25周围的函数params.lang中的

wbxml2xml设置为:

params.lang = WBXML_LANG_UNKNOWN

就像魅力一样。同时将WBXMLParseError的基类更改为异常有助于:

class WBXMLParseError(Exception):