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

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

有帮助吗?

解决方案 2

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

然后从horde.org cvs。

获取代码表

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

其他提示

有趣的是,我一直在研究同样的问题。我在编写自己的纯Python WBXML解析器的过程中已经过了一半,但它还不够完整,没有用,我现在没有多少时间来处理它。

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

让它工作可能就像向libwbxml添加SyncML 1.3表一样简单。也就是说,上次我尝试过,pywbxml不会针对vanilla libwbxml源编译,所以你必须首先应用一些补丁...所以<!> quot; simple <!> quot;可能是一个相对的术语。

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

函数params.lang中的

wbxml2xml围绕第25行设置为:

params.lang = WBXML_LANG_UNKNOWN

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

class WBXMLParseError(Exception):
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top