Smack IQ包的扩展

简介:

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




      本文转自zsdnr  51CTO博客,原文链接:http://blog.51cto.com/12942149/1932743,如需转载请自行联系原作者




相关文章
|
6月前
|
Java 数据安全/隐私保护
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
321 1
|
2月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录
|
5月前
|
安全 Shell 数据安全/隐私保护
【内网安全】 横向移动&IPC&AT&SC命令&Impacket套件&CS插件&全自动
【内网安全】 横向移动&IPC&AT&SC命令&Impacket套件&CS插件&全自动
188 0
|
存储 自然语言处理 Go
|
开发框架 IDE 前端开发
Deepin下使用Rider开发发.NET Core
Deepin下使用Rider开发发.NET Core
306 0
Deepin下使用Rider开发发.NET Core
Omni/USDT PHP开发包OmniTool简介
OmniTool开发包适用于为PHP应用快速增加对Omni Layer/USDT数字资产的支持能力,即支持使用自有Omni Layer节点的应用场景,也支持基于第三方API服务和离线裸交易的轻量级部署场景。
2300 0
|
Oracle 关系型数据库 MySQL
使用Dapper.Contrib 开发.net core程序,兼容多种数据库
原文:使用Dapper.Contrib 开发.net core程序,兼容多种数据库 关于Dapper的介绍,我想很多人都对它有一定的了解,这个类似一个轻型的ORM框架是目前应用非常火的一个东西,据说各方面的性能都不错,而且可以支持多种数据库,在开始介绍这个文章之前,我花了不少功夫来学习了Dapper 的相关使用。
1409 0
|
中间件 调度 前端开发
使用.NET Core搭建分布式音频效果处理服务(六)让Middleware自动Invoke
  为何要用中间件来实现音频处理的监听服务 当然也可以使用Startup来进行服务的自启动,或者也可以使用quartz定时调度任务来启动音频服务,大家随意。 笔者认为使用中间件的目的,是为了分离应用和服务,也是一种解耦手段。
1043 0
|
Java API
dubbox 增加google-gprc/protobuf支持
好久没写东西了,今年实在太忙,基本都在搞业务开发,晚上来补一篇,作为今年的收官博客。google-rpc 正式发布以来,受到了不少人的关注,这么知名的rpc框架,不集成到dubbox中有点说不过去。 但是grpc的思路与其它rpc(比如:avro/thrift)有些不一样,并非直接采用 "接口定义...
1293 0