Я испытал это, это довольно простой, но он работает нормально, хотя я уверен, что это очень неэффективно и/или там могут быть более эффективные способы для осуществления этого (ждать кавалерию, чтобы прибыть):
1> X = {xmlelement,"presence", [{"xml:lang","en"}, {"ver","6.00.00"}, {"to", "[email protected]/user"}], [{xmlelement,"c", [{"xmlns", "http://jabber.org/protocol/caps"}, {"node", "http://www.google.com/xmpp/client/caps/"}, {"ver", "eVvrsq8jya/4AZMjFl5BeDKSmg4="}, {"hash","sha-1"}], []}, {xmlelement,"nick", [{"xmlns", "http://jabber.org/protocol/nick"}], [{xmlcdata,<<"user">>}]}, {xmlelement,"x", [{"xmlns", "http://jabber.org/protocol/muc"}], [{xmlelement,"history", [{"maxstanzas","20"}, {"maxchars","32768"}], []}]}]}.
{xmlelement,"presence",
[{"xml:lang","en"},
{"ver","6.00.00"},
{"to","[email protected]/user"}],
[{xmlelement,"c",
[{"xmlns","http://jabber.org/protocol/caps"},
{"node","http://www.google.com/xmpp/client/caps/"},
{"ver","eVvrsq8jya/4AZMjFl5BeDKSmg4="},
{"hash","sha-1"}],
[]},
{xmlelement,"nick",
[{"xmlns","http://jabber.org/protocol/nick"}],
[{xmlcdata,<<"user">>}]},
{xmlelement,"x",
[{"xmlns","http://jabber.org/protocol/muc"}],
[{xmlelement,"history",
[{"maxstanzas","20"},
{"maxchars","32768"}],
[]}]}]}
2> {xmlelement,_,[{_,_},{_,_},{_,_}],[{xmlelement,_,[{_,_},{"node",Node},{_,_},{_,_}],[]},{xmlelement,_,[{_,_}],[{xmlcdata,_}]},{xmlelement,_,[{_,_}],[{xmlelement,_,[{_,_},{"maxchars",MaxChars}],[]}]}]} = X.
{xmlelement,"presence",
[{"xml:lang","en"},
{"ver","6.00.00"},
{"to","[email protected]/user"}],
[{xmlelement,"c",
[{"xmlns","http://jabber.org/protocol/caps"},
{"node","http://www.google.com/xmpp/client/caps/"},
{"ver","eVvrsq8jya/4AZMjFl5BeDKSmg4="},
{"hash","sha-1"}],
[]},
{xmlelement,"nick",
[{"xmlns","http://jabber.org/protocol/nick"}],
[{xmlcdata,<<"user">>}]},
{xmlelement,"x",
[{"xmlns","http://jabber.org/protocol/muc"}],
[{xmlelement,"history",
[{"maxstanzas","20"},
{"maxchars","32768"}],
[]}]}]}
3> Node.
"http://www.google.com/xmpp/client/caps/"
4> MaxChars.
"32768"
5>
на линии 2>
мы шаблон совпадает со значениями, которые вы ожидаете в этом «формате». Поместите привязки в те места, где вы хотите получить значения, и, если возможно, установите некоторые ограничения, такие как, например, атомы, которые не будут меняться в пакете XML. Надеюсь, вы поняли эту идею.
Вы, кажется, с помощью очень старая версия ejabberd. В новой версии используются записи #xmlel. –