【发布时间】:2015-12-17 23:39:16
【问题描述】:
Ejabberd 服务器收到这样的数据包:
{xmlel,<<"message">>,[{<<"from">>,<<"user1@localhost/resource">>},{<<"to">>,<<"user2@localhost">>},{<<"xml:lang">>,<<"en">>},{<<"id">>,<<"947yW-9">>}],[{xmlcdata,<<">">>},{xmlel,<<"body">>,[],[{xmlcdata,<<"Helllo wassup!">>}]}]}
我想从这个数据包中获取数据。
需要的数据:类型,如果body有某个参数,比如{<<"xml:lang">>,<<"en">>}
我正在做以下操作:
{_XMLEL, TYPE, DETAILS , _BODY} = Packet
这为我提供了类型:<<"message">> 或 <<"iq">> 或 <<"presence">>。
要检查 DETAILS 是否有 {<<"xml:lang">>,<<"en">>} 我这样做:
Has_Attribute=lists:member({<<"xml:lang">>,<<"en">>},DETAILS)
有没有更好的方法来做到这一点?
我还需要数据包中的to 和from 属性。
【问题讨论】: