【问题标题】:Ejabberd xml record types definitionEjabberd xml 记录类型定义
【发布时间】:2016-01-08 23:17:46
【问题描述】:

Packet 原子存储如下打印的 xmlelement 记录。 xmlelement 的 records 是在哪里定义的。在 ejabberd 源代码树中找不到。

I(<0.12602.0>:my_module:47) : in_filter_packet: {xmlelement,"iq",
                                                 [{"type","get"},
                                                  {"id","purpled56e4316"}],
                                                 [{xmlelement,"ping",
                                                   [{"xmlns","urn:xmpp:ping"}],
                                                   []}]} 


I(<0.13000.0>:my_module:47) : in_filter_packet: {xmlelement,"message",
                                                 [{"type","chat"},
                                                  {"id","purple4e6f6c61"},
                                                  {"to","test2@ubuntu"}],
                                                 [{xmlelement,"active",
                                                   [{"xmlns",
                                                     "http://jabber.org/protocol/chatstates"}],
                                                   []}]} 

【问题讨论】:

    标签: erlang ejabberd


    【解决方案1】:

    xmlelement 结构用于旧版本的 ejabberd (2.x)。我相信您正在尝试使用尚未针对最新版本的 ejabberd 更新的模块或示例代码。 ejabberd 现在使用 xmlel 记录。

    作为参考,在 ejabberd 2.x 中,xmlelement 不是正确定义的记录,而只是以下形式的元组:{xmlelement, Name, Attrs, Childrens}。您不需要参考任何记录来处理它们,您只需处理元组即可。记录是元组之上的糖语法。

    【讨论】:

    • 我为 ejabberd 版本 2.1.11 编写了一个模块。所以我猜在 ejabberd 版本 2.1.11 中没有定义记录类型(在 *.erl 和 *.hrl 文件中 grepping 后无法找到)。目前没有升级计划,可能会在 3 个月后升级。
    • 更新我的答案:作为参考,在 ejabberd 2.x 中,xmlelement 不是正确定义的记录,而只是以下形式的元组:{xmlelement, Name, Attrs, Childrens}。您不需要参考任何记录来处理它们,您只需处理元组即可。记录是元组之上的糖语法。
    • 谢谢。知道了。有没有办法将元组打印到原始 xml 字符串?
    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2022-08-10
    • 2014-11-06
    • 1970-01-01
    相关资源
    最近更新 更多