Smack IQ包的扩展

网友投稿 265 2022-10-25


Smack IQ包的扩展

如果我们要扩展一个如下所示的IQ包:

             element     

需要定义一个自定义IQ进行扩展:

package com.emcc.stc.demo.iq;import org.jivesoftware.smack.packet.IQ;public class SampleIQ extends IQ {     String condition;     String value;    protected SampleIQ(String childElementName, String childElementNamespace,             String condition, String value)     {        super(childElementName, childElementNamespace);        this.condition = condition;        this.value = value;     }    /**      * 最关键的实现类     */     @Override    protected IQChildElementXmlStringBuilder getIQChildElementBuilder(             IQChildElementXmlStringBuilder xml)     {         xml.attribute("condition", condition);         xml.rightAngleBracket();         xml.element("extraElement", "value");        return xml;     }    public static void main(String[] args)     {         IQ iq = new SampleIQ("query", "emcc.jiyq", "what", "elemeng");         System.out.println(iq.toXML());     } }

这种方式的好处是,每一种IQ都有特定定义,每个自定义IQ类都有其应用场景,而且无需再手动配置XML。

另外,可以编写相应的IQParser解析特定类型的IQ包,更加利于使用。

最后,Smack的文档是相当缺失的,很多问题,还是仔细阅读源代码比较好。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springboot+rabbitmq实现延时队列的两种方式
下一篇:HQL查询
相关文章

 发表评论

评论列表