[英]Convert String to XMPP Stanza using Smack Android
要么
Q)從String生成XMPP Stanza。
Q)將字符串轉換為XMPP Stanza。
在Android中使用Smack庫,
Message message = new Message();
message.setStanzaId("123");
message.setFrom("923442621149");
message.setType(Message.Type.chat);
message.setBody("shanraisshan");
final String msgString = message.toXML().toString();
Log.e("message --->", msgString);
上面的代碼生成后面的節
msgString:
<message from='923442621149' id='123' type='chat'><body>shanraisshan</body></message>
我已將此msgString保存到我的數據庫中。
現在,我想要做的是,從數據庫中檢索此字符串
由於Message是Stanza的子類,我嘗試了以下代碼:
Stanza stanza = new Stanza() {
@Override
public CharSequence toXML() {
return msgString;
}
};
Log.e("stanza XML --->", stanza.toXML().toString());
Log.e("stanza getFrom() ->", stanza.getFrom() + ":");
Log.e("stanza getStanzaId() ->", stanza.getStanzaId() + ":");
控制台日志打印如下
stanza XML --->: <message from='923442621149' id='123' type='chat'><body>shanraisshan</body></message>
stanza getFrom() ->: null:
stanza getStanzaId() ->: OtU0i-29:
我無法理解,為什么
stanza.toXML()。toString()打印右側節
stanza.getFrom()為null而不是923442621149
stanza.getStanzaId()是OtU0i-29而不是123
另外,在將Stanza轉換為Message時,會產生ClassCastException
Message castedMsg = (Message)stanza;
產生
java.lang.ClassCastException:
我該如何轉換msgString
msgString = "<message from='923442621149' id='123' type='chat'><body>shanraisshan</body></message>";
進入org.jivesoftware.smack.packet。 消息類?
在Github上瀏覽Smack Library源代碼后 ,我發現該庫正在使用PacketParserUtils.java方法的parseStanza()將String轉換為Stanza。
String msgString = "<message from='923442621149' id='123' type='chat'><body>shanraisshan</body></message>";
Message message = (Message)PacketParserUtils.parseStanza(msgString);
Log.e("message XML->", message.toXML().toString());
Log.e("message getFrom()->", message.getFrom() + ":"); //923442621149:
Log.e("message getStanzaId()->", message.getStanzaId() + ":"); //123:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.