如何发布和解析 pubsub xmpp smack 库的自定义负载

how to publish and parse custom payload for pubsub xmpp smack library

这个问题是在 here and here 之前提出的,但我没有从那里得到答案。 我正在开发使用 pubsub 和 xmpp 的应用程序,因为 android 我正在使用 smack 库。我想将自定义有效负载发送到节点并在接收到自定义有效负载时如何解析并将其显示在列表中?现在我可以发送和接收消息了,但这只是 documentaion 中的一个小例子。这是我的例子,

String msg = "room pubsub test";

SimplePayload payload = new SimplePayload("message", "pubsub:test:message", "<message xmlns='pubsub:test:message'><body>" + msg + "</body></message>");

PayloadItem<SimplePayload> item = new PayloadItem<>(null, payload);

node.publish(item);

当我收到物品时

node.addItemEventListener(new ItemEventListener() {
           @Override
           public void handlePublishedItems(ItemPublishEvent items) {
                  System.out.println("======================handlePublishedItems==============================");
                  System.out.println(items.getItems());
           }
}

我得到的输出是

[org.jivesoftware.smackx.pubsub.PayloadItem | 
Content [<item id='5E277A9C33A58'>
<message xmlns='pubsub:test:message'>
<body xmlns='pubsub:test:message'>room pubsub test</body><
/message>
</item>]]

我想发送自定义有效负载,例如发送消息的时间、谁发送了此消息等。 那么,我该如何发送自定义负载?以及如何解析它并显示给用户?

使用以下代码发送时间和发件人的自定义负载:

 SimplePayload payload = new SimplePayload("message", "pubsub:test:message", "<message xmlns='pubsub:test:message'><body>" + textMessage + "</body><from>"+Sender+"</from><time>"+time+"</time></message>");

对于解析,您可以使用 XmlPullParser 并使用标记名称解析响应