質問

ノキアN95からWBXMLエンコードされたSyncMLメッセージをデコードしようとしています。 私の最初の試みは、libwbxmlへの呼び出しをラップするPython pywbxmlモジュールを使用することでした。これでメッセージをデコードすると、多くの<!> lt; unknown <!> gt;タグと<!> lt; Collection <!> gt;内の大きなバイナリチャンクタグ。 <!> lt; Collection <!> gt;のコンテンツを実行してみました。それ自体で通過しますが、失敗しました。不足しているものはありますか?

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

役に立ちましたか?

解決 2

私は自分でpythonパーサーを書くことになりました。私はここの仕様に従うことでそれを行うことができました: http://www.w3.org/TR/wbxml/

そして、horde.org cvsからコードテーブルを取得します。

オープンモバイルアライアンスのサイトとドキュメントはひどいものです。これは非常に挑戦的なプロジェクトでした:(

他のヒント

おもしろいことに、私は同じ問題に取り組んできました。私は独自のpure-Python WBXMLパーサーを作成している途中ですが、まだ実用化するのに十分なほど完成していないため、今作業する時間はほとんどありません。

これらの<!> lt;不明な<!> gt;タグは、pywbxml / libwbxmlに適切なタグボキャブラリがロードされていないことが原因である可能性があります。 WBXMLは、同じタグ名を何百回も送信しないようにインデックス番号でタグを表します。インデックス番号をタグ名にマッピングするテーブルは、WBXMLドキュメント自体とは別に提供する必要があります。 libwbxmlソースを漠然と見ると、libwbxmlのように見える多数のタグテーブルがハードコーディングされています。 SyncML 1.0-1.2用のテーブルがあります。 Nokia E71がSyncML 1.3を送信すると思う(もしそうなら、N95もおそらく送信します)が、libwbxmlはまだサポートしていないようです。

それを機能させるには、SyncML 1.3テーブルをlibwbxmlに追加するだけで簡単です。とは言うものの、前回試したとき、pywbxmlはバニラlibwbxmlソースに対してコンパイルされないため、最初にいくつかのパッチを適用する必要があります...だから<!> quot; simple <!> quot;相対用語の場合があります。

pywbxml を使用しました。 pywbxml.pyxに1つのパッチが必要でした:

params.lang関数内のwbxml2xml 周辺25行目:に設定:

params.lang = WBXML_LANG_UNKNOWN

チャームのように機能します。また、WBXMLParseErrorの基本クラスを例外に変更すると役立ちます。

class WBXMLParseError(Exception):
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top