3

Nokia N95 から WBXML エンコードされた SyncML メッセージをデコードしようとしています。私の最初の試みは、libwbxml への呼び出しをラップする python pywbxml モジュールを使用することでした。これを使用してメッセージをデコードすると、多くの <unknown> タグと、<Collection> タグ内のバイナリの大きなチャンクが得られました。<Collection> の内容を単独で実行しようとしましたが、失敗しました。足りないものはありますか?

また、wbxml パーサーの純粋な python 実装を知っている人はいますか? これらのメッセージをデコードするためのコマンド ラインまたはオンライン ツールが役に立たないことに失敗すると、自分でメッセージを作成するのがずっと簡単になります...

4

3 に答える 3

1

おかしなことに、私は同じ問題に取り組んできました。独自の純粋な Python WBXML パーサーを作成する作業は半分ほど進んでいますが、まだ実用に耐えるほどには完成していません。

これらの <Unknown> タグは、pywbxml / libwbxml に適切なタグ語彙が読み込まれていないことが原因である可能性があります。WBXML は、同じタグ名を何百回も送信しないようにインデックス番号でタグを表します。インデックス番号をタグ名にマップするテーブルは、WBXML ドキュメント自体とは別に提供する必要があります。libwbxml ソースをざっと見たところ、libwbxmlにはハードコードされたタグ テーブルがたくさんあるように見えます。SyncML 1.0-1.2 のテーブルがあります。私の Nokia E71 は SyncML 1.3 を送信していると思います (もしそうなら、あなたの N95 もおそらくそうします)、libwbxml はまだサポートしていないようです。

それを機能させるには、SyncML 1.3 テーブルを libwbxml に追加するのと同じくらい簡単かもしれません。そうは言っても、前回試したとき、pywbxml はバニラの 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にパッチが1つ必要です。

params.lang25行wbxml2xml目あたりの関数は次のように設定されています。

params.lang = WBXML_LANG_UNKNOWN

魅力のように機能します。また、WBXMLParseErrorの基本クラスを例外に変更すると次のようになります。

class WBXMLParseError(Exception):
于 2009-12-01T13:35:16.113 に答える