我对此进行了测试,它非常基本但运行良好,尽管我很确定效率很低和/或可能有更好的方法来做到这一点(等待骑兵到达):
1> X = {xmlelement,"presence", [{"xml:lang","en"}, {"ver","6.00.00"}, {"to", "test@conference.localhost/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","test@conference.localhost/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","test@conference.localhost/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 数据包中不会更改的原子。我希望你能明白。