Ejabberd получает пакет, как это:Ejabberd Packet разбора с использованием Erlang
{xmlel,<<"message">>,[{<<"from">>,<<"[email protected]/resource">>},{<<"to">>,<<"[email protected]">>},{<<"xml:lang">>,<<"en">>},{<<"id">>,<<"947yW-9">>}],[{xmlcdata,<<">">>},{xmlel,<<"body">>,[],[{xmlcdata,<<"Helllo wassup!">>}]}]}
Я хочу, чтобы получить данные из этого пакета. Необходимые данные: тип, если тело имеет определенный параметр, скажем {<<"xml:lang">>,<<"en">>}
я делаю следующие операции:
{_XMLEL, TYPE, DETAILS , _BODY} = Packet
Это дает мне тип: <<"message">>
или <<"iq">>
или <<"presence">>
.
Чтобы проверить, если ПОДРОБНОСТИ имеет {<<"xml:lang">>,<<"en">>}
я это сделать:
Has_Attribute=lists:member({<<"xml:lang">>,<<"en">>},DETAILS)
Есть ли лучший способ сделать это? Мне также нужны атрибуты to
и from
из пакета.