3

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

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

4

3 回答 3

1

有趣的是,我一直在解决同样的问题。我编写自己的纯 Python WBXML 解析器大约已经完成了一半,但它还不够完整,无法派上用场,而且我现在几乎没有时间来处理它。

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

让它工作可能就像将 SyncML 1.3 表添加到 libwbxml 一样简单。就是说,上次我尝试过,pywbxml 不能针对 vanilla libwbxml 源进行编译,所以你必须先应用一些补丁......所以“简单”可能是一个相对术语。

于 2008-10-23T16:59:13.020 回答
1

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

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

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

于 2008-11-11T13:53:06.780 回答
0

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

params.lang在第 25 行wbxml2xml附近的函数中设置为:

params.lang = WBXML_LANG_UNKNOWN

像魅力一样工作。将 WBXMLParseError 的基类更改为异常也有助于:

class WBXMLParseError(Exception):
于 2009-12-01T13:35:16.113 回答