要在Spark处理OpenFire发送过来的IQ,必须要实现一个针对该IQ的IQProvider。
接口org.jivesoftware.smack.provider.IQProvider 只有一个方法
public IQ parseIQ(XmlPullParser parser) throws Exception;
该方法把xml解析成IQ对象,实现该方法最重要的就是了解XmlPullParser 对象,详细的可以参考文档
http://www.xmlpull.org/v1/doc/api/org/xmlpull/v1/XmlPullParser.html
写个使用例子:
该实现解释的IQ如下:
方法输出:
解析xml头:<uploadresult xmlns="http://www.gyoa.com/uploadattachresult">,uploadresult
解析xml:true,uploadresult
=====@@##=====true
解析xml尾:</uploadresult>,uploadresult
说明: 在进入while(true)循环之前parser指向标签uploadresult的开始位置即<uploadresult xmlns="http://www.gyoa.com/uploadattachresult"> 。
在循环里不断调用next() 返回当前的状态,然后根据不同的状态解析标签的属性和内容