Pergunta

Eu estou tentando decodificar um WBXML codificado mensagem SyncML de um Nokia N95. Minha primeira tentativa foi usar o módulo python pywbxml que envolve chamadas para libwbxml. Decodificar a mensagem com este deu um monte de marcas e um grande pedaço de binário dentro de uma tag . Eu tentei executar o conteúdo do através de, por si só, mas ele falhou. Existe algo que eu estou perdendo?

Além disso, alguém sabe de uma implementação python puro de um analisador WBXML? Falhando isso uma linha de comando ou ferramenta online para decodificar essas mensagens seria útil - seria torná-lo muito mais fácil para mim escrever meu próprio ...

Foi útil?

Solução 2

Acabei escrevendo um python analisador mim. Consegui fazê-lo, seguindo a especificação aqui: http://www.w3.org/TR/wbxml/

E, em seguida, tomar as tabelas de códigos a partir das cvs horde.org.

local e documentação da Aliança móvel aberto são terríveis, este foi um projeto muito tentando: (

Outras dicas

Curiosamente eu estive trabalhando no mesmo problema. Estou prestes a meio escrever meu próprio analisador puro-Python WBXML, mas ainda não é o bastante completa para ser útil, e eu tenho muito pouco tempo para trabalhar nele agora.

Aqueles marcas pode ser porque pywbxml / libwbxml não tem o vocabulário tag direito carregado. WBXML representa etiquetas por um número de índice para evitar a transmissão do mesmo nome tag centenas de vezes, e a tabela que mapeia os números de índice para nomes de tags tem de ser fornecida separadamente do documento WBXML si. De um vago olhar para a fonte libwbxml parece que libwbxml tem um monte de mesas tag codificado. Tem mesas para SyncML 1,0-1,2; Acho que o meu Nokia E71 envia SyncML 1.3 (em caso afirmativo, o N95 provavelmente faz também), que parece que libwbxml não suporta ainda.

fazê-la funcionar pode ser tão simples como a adição de um SyncML 1.3 tabela para libwbxml. Dito isto, a última vez que eu tentei, pywbxml não compila contra a fonte libwbxml baunilha, então você tem que aplicar alguns patches primeiro ... tão "simples" pode ser um termo relativo.

pywbxml , Só precisava de um remendo em pywbxml.pyx:

params.lang em função wbxml2xml torno linha 25 definido para:

params.lang = WBXML_LANG_UNKNOWN

funciona como charme. Também mudando classe base para WBXMLParseError a exceção ajuda:

class WBXMLParseError(Exception):
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top