我想將自定義XML添加到傳入消息數據包。爲了做到這一點,作爲插件實現的一部分,我編寫了一個PacketInterceptor
,它攔截消息並添加一個擴展。直到這一點,一切都很好,但是當接收者接收到此消息時,存儲在自定義xml中的信息將被刪除。僅顯示具有名稱空間的xml元素。如何使用XMPP在Openfire插件中使用PacketInterceptor爲消息添加自定義XML元素
傳入的消息是常規短信如圖所示如下─
<message to='[email protected]/SomeResource' from='[email protected]/testbot2' id='63S0G-27' type='groupchat'>
<body>Hi</body>
</message>
當我添加自定義XML這個消息體,它看起來在PacketInterceptor
日誌 -
<message to='[email protected]/SomeResource' from='[email protected]/testbot2' id='63S0G-27' type='groupchat'>
<body>Hi</body>
<data value="imgURL1"/>
</message>
添加XML後,如下但是當接收者接收到該消息時,數據中的value
屬性被剝離並且參與者接收到下面的消息 -
<message to='[email protected]/SomeResource' from='[email protected]/testbot2' id='63S0G-27' type='groupchat'>
<body>Hi</body>
<data xmlns='jabber:client'></data>
</message>
請注意,文本和屬性都從數據XML節點中被剝離。
下面是Java代碼片斷,供大家參考
public void interceptPacket(Packet packet, Session session, boolean incoming, boolean processed) throws PacketRejectedException {
// Some code
Message messagePacket = (Message) packet;
Document document = DocumentHelper.createDocument();
Element root = document.addElement("data");
Element root1 = root.addAttribute("value", "imgURL1");
PacketExtension pe = new PacketExtension(root1);
messagePacket.addExtension(pe);
}