前几天一直很烦躁,怎么扩展smack的IQ包堵了我好久,今天静下心来看了下smack的源码,把这个问题解决了。下面给出步骤:

如果我们要扩展一个如下所示的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的文档是相当缺失的,很多问题,还是仔细阅读源代码比较好。

最新文章

  1. JS中检测数据类型的几种方式及优缺点【转】
  2. 【jQuery示例】遍历表单数据并显示
  3. 隐式意图启动一个Activity
  4. Spring学习2—Spring容器
  5. POJ 2960 S-Nim&lt;博弈&gt;
  6. VMware系统运维(十三)部署虚拟化桌面 Horizon View Agent 5.2安装
  7. 得到创建人Id
  8. 重新配置与卸载 11gR2 Grid Infrastructure
  9. iOS基础 - 数据库-SQLite
  10. MemoryStream 转 pdf
  11. PHP多线程 curl_multi_init 的使用
  12. LODOP打印安装到win的特殊字体
  13. 百度api接口_知识积累
  14. git忽略除指定文件/指定后缀名文件外的文件
  15. 数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库
  16. Java 系统学习梳理_【All】
  17. jdk与jdt
  18. F6&amp;F7adjust the volume
  19. Codeforces 1082 B. Vova and Trophies-有坑 (Educational Codeforces Round 55 (Rated for Div. 2))
  20. java 在Excel中插入图片 POI实现

热门文章

  1. JSTL标签总结
  2. iOS 10的23个隐藏新特性-b
  3. java连接sqlserver2008报错 java.sql.SQLException: 对象名 &#39;表名&#39; 无效.
  4. C# 连接 Oracle 的几种方式[转]
  5. 3036: 绿豆蛙的归宿 - BZOJ
  6. python 安装 easy_intall 和 pip python无root权限安装
  7. Codeforces 402A 402B 402C 402D
  8. Appium —— desired_capabilities详解
  9. poj 3268 Silver Cow Party(最短路,正反两次,这个模版好)
  10. 【Linux高频命令专题(19)】vi/vim