如何从[Smack XMPP API] MultiUserChat消息中获取CDATA?

时间:2015-06-05 16:22:45

标签: xmpp smack cdata

Smack的调试控制台消息向我显示了一条完整的消息,包括我正在寻找的CDATA中的消息详细信息:

class java.util.ArrayList

但在我的代码中,当我查看Message时,所有细节都已从11:45:05 AM RECV (0): < 11:45:05 AM RECV (0): message to="me@server.com/Smack" type="groupchat" from="roomname@conf.server.com/roomname-abc"><body>ABCD issues valid 2015-06-05T15:45:00Z</body><html xmlns="http://jabber.org/protocol/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml">ABCD issues valid 2015-06-05T15:45:00Z</body></html> <x xmlns="roomname-abc" issue="2015-06-05T15:45:00Z" someid="foo" id="1234.5678"><![CDATA[ +------------------------+ | THIS IS MESSAGE DETAIL | | INSIDE THE CDATA | | THAT I REALLY NEED | +------------------------+ ]]></x></message> 元素中删除,包括其中的一些属性:

<x></x>

这个细节发生了什么,控制台是如何看到它但我不能,我怎么能得到CDATA?

2 个答案:

答案 0 :(得分:1)

您需要为包含CDATA部分的扩展元素实现并注册提供程序。有关更多信息,请参阅有关提供程序的Smack文档。

答案 1 :(得分:1)

在完成这项工作的时间压力下,我使用Babbler而不是Smack重新实现了我的客户端,并得到了我需要的东西。 (我需要的CDATA保留在消息扩展中,我没有必要编写额外的代码。)