您好,登錄后才能下訂單哦!
如果我們要擴展一個如下所示的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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。