Smack IQパッケージの拡張
1309 ワード
以下に示すIQパケットを拡張する場合は、
拡張のためにカスタムIQを定義する必要があります.
この方法の利点は、各IQには特定の定義があり、各カスタムIQクラスにはその適用シーンがあり、XMLを手動で構成する必要がないことです.
さらに、対応するIQparser解析の特定のタイプのIQパケットを記述することができ、より使いやすい.
最後に、Smackのドキュメントはかなり欠けています.多くの問題がありますが、ソースコードをよく読んだほうがいいです.
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のドキュメントはかなり欠けています.多くの問題がありますが、ソースコードをよく読んだほうがいいです.