您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
如果我们要扩展一个如下所示的IQ包:
<iq id="0001" to="search@jiyq.cn" type=”get”> <query xmls="emcc.jiyq" condition="what"/> <extrament>element</extrament> <query></iq>
需要定义一个自定义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的文档是相当缺失的,很多问题,还是仔细阅读源代码比较好。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。