【问题标题】:Decoding a WBXML SyncML message from an S60 device解码来自 S60 设备的 WBXML SyncML 消息
【发布时间】:2010-09-18 14:00:31
【问题描述】:

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

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

【问题讨论】:

    标签: python s60 syncml wbxml


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        params.lang 在函数 wbxml2xml 周围 line 25 设置为:

        params.lang = WBXML_LANG_UNKNOWN
        

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

        class WBXMLParseError(Exception):
        

        【讨论】:

          猜你喜欢
          • 2010-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-18
          • 2013-09-05
          • 2017-09-18
          • 2020-02-10
          • 1970-01-01
          相关资源
          最近更新 更多