Smack IQパッケージの拡張

1309 ワード

以下に示す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のドキュメントはかなり欠けています.多くの問題がありますが、ソースコードをよく読んだほうがいいです.