[英]Parsing EventElement for XMPP using Smack Library
任何人都可以幫忙向我展示如何解析此Event pub元素並獲取以下Packet的Message對象。 也許我的關鍵字/搜索詞谷歌搜索不正確,但是在查找有關此文檔或教程時找不到任何有用的信息。
我已經閱讀了有關PacketParserUtils和XmlPullParser的內容,並嘗試實現它,但我一直在獲取null。
碼
EventElement event = groupMessage.getExtension("event", "http://jabber.org/protocol/pubsub#event");
try {
XmlPullParser parser = PacketParserUtils.newXmppParser();
Log.d(TAG, "processStanza event: "+ event.toXML().toString());
parser.setInput(new StringReader(event.toXML().toString()));
Item items = (Item) parser.getProperty("items");
Log.d(TAG, "processStanza: " + items);
} catch (XmlPullParserException e) {
e.printStackTrace();
}
<message to='+60174443333@crystal.domain.com/Resource' from='9176d3d3-e893-4add-91a1-82b42338c223@group.crystal.domain.com'>
<event xmlns='http://jabber.org/protocol/pubsub#event'>
<items node='urn:xmpp:mucsub:nodes:messages'>
<item id='17100773132085304799'>
<message xmlns='jabber:client' lang='en' to='+60174443333@crystal.domain.com' from='9176d3d3-e893-4add-91a1-82b42338c223@group.crystal.domain.com/+60149711089@crystal.domain.com' type='groupchat' id='21D85845-8434-4E0B-BB0C-5768256C5B66'>
<body xmlns='jabber:client'>This is the message</body>
</message>
</item>
</items>
</event>
</message>
盡管已過時,但它可能會幫助新用戶。 您可以將自定義muc-sub xml解析為:
(在科特林)
xmppTcpConnection.addAsyncStanzaListener(StanzaListener {
it?.let { stanza ->
if (stanza is Message) {
val eventElement: EventElement? = stanza.getExtension(
"event",
"http://jabber.org/protocol/pubsub#event")
if (eventElement != null) {
val itemsExtension: ItemsExtension = eventElement .event as ItemsExtension
itemsExtension.items?.forEach { namedElement ->
val payloadItem = namedElement as PayloadItem<*>
val simplePayload: SimplePayload = payloadItem.payload as SimplePayload
val parserString: String = simplePayload.toXML(null)
val xmlPullParser: XmlPullParser = PacketParserUtils.getParserFor(parserString)
val message: Message = PacketParserUtils.parseMessage(xmlPullParser)
//Your code here
}
}
}
}
}, StanzaTypeFilter(Message::class.java))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.