2015-09-06 4 views
0

Когда я получаю сообщение, тело равно null, но система нет. И если тело не имеет ребенка, полученное сообщение тела не будет равно нулю. Я не знаю причины. Метод и системный журнал:андроид тело принятого сообщения равно

//========this is system log========== 
09-06 11:33:56.385: D/SMACK(6685): 11:33:56 上午 RCV (1116678480): 
<message 
type="chat" from="[email protected]/kafei" 
to="[email protected]"> 
<body> 
    <mp3 id="278" 
     title="me" 
     img="http://59.57.240.170:40081//upload/201507/21/201507211559595666.jpg" 
     tag="GEM"/> 
</body> 
<mfile xmlns="xmpp.zznnet.cn"><mtype>mp3</mtype></mfile> 
</message> 


//========this is my log============ 
09-06 11:33:56.405: I/System.out(6685): xml: 
<message to="[email protected]" from="[email protected]/kafei"  
type="chat"> 
    <body>nullnull</body> 
    <mfile xmlns="xmpp.zznnet.cn"> 
<mtype>mp3</mtype></mfile> 
</message> 

//This is part of the received code 
mPacketListener = new PacketListener() { 
     public void processPacket(Packet packet) { 
      try {   
       if (packet instanceof Message) { 
        Message msg = (Message) packet; 
        String chatMessage = msg.getBody(); 
        System.out.println("xml:" +packet.toXML());}} 
      catch(Exception e){} 

ответ

0

Признак RECV - это фактический полученный пакет.

Тот, который распечатывается пакетом.toXML() - результат после парсеров. Итак, в основном, элемент mp3 xml не анализировался ExtensionElementProvider, и поэтому тело не может быть создано обратно функцией toXML Message.

Аналогичный вопрос был задан и ответил ранее. например How to get custom attribute value from an XMPP XML message?

Один комментарий, проще добавить расширение вне элемента body вместо изменения внутри элемента body.