我正在尝试解码来自诺基亚N95的WBXML编码的SyncML消息。 我的第一次尝试是使用python pywbxml模块来封装对libwbxml的调用。用这个解码消息给了很多< unknown>标签和< Collection>中的一大块二进制文件标签。我尝试运行< Collection>的内容通过自己,但它失败了。有什么我想念的吗?
另外,有没有人知道wbxml解析器的纯python实现?如果没有命令行或在线工具来解码这些消息会很有用 - 这会让我更容易编写自己的...
答案 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)