I'm getting the following xml format for every message coming from xmpp
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
NSLog(@"Message %@",message);
}
In console its printing
<message
xmlns="jabber:client" from="[email protected]" to="[email protected]/mobile">
<result
xmlns="urn:xmpp:mam:tmp" id="1483781596098940">
<forwarded
xmlns="urn:xmpp:forward:0">
<message
xmlns="jabber:client" from="[email protected]/mobile" to="[email protected]" type="chat">
<body>Hi</body>
<delay
xmlns="urn:xmpp:delay" from="xmpp-dev.peeks.com" stamp="2016-12-22T04:50:17.023Z">Offline Storage
</delay>
</message>
<delay
xmlns="urn:xmpp:delay" from="xmpp-dev.peeks.com" stamp="2017-01-07T09:33:16.099Z">
</delay>
</forwarded>
</result>
</message>
I want to fetch "from", "to", "body", and "stamp" from every message and i did the following
NSXMLElement *body = message;
NSXMLElement *messageb = [body elementForName:@"result" xmlns:@"urn:xmpp:mam:tmp"];
NSXMLElement *forwa=[messageb elementForName:@"forwarded" xmlns:@"urn:xmpp:forward:0"];
NSXMLElement *msg=[forwa elementForName:@"message" xmlns:@"jabber:client"];
NSXMLElement *TD=[forwa elementForName:@"delay" xmlns:@"urn:xmpp:delay"];
NSString *from=[[msg elementForName:@"from" xmlns:@"jabber:client"] stringValue];
NSString *to=[[msg elementForName:@"to" xmlns:@"jabber:client"] stringValue];
NSString *bodyq=[[msg elementForName:@"body"] stringValue];
NSString *stmp=[[TD elementForName:@"stamp" xmlns:@"urn:xmpp:delay"] stringValue];
NSString *final=[NSString stringWithFormat:@"From: %@\nTo: %@\nBody: %@\nStamp: %@",from,to,bodyq,stmp];
NSLog(@"forwa %@", final);
I can able to print only the message body and the log prints like
From: (null)
To: (null)
Body: hi
Stamp: (null)
Fix to search for attributes: elements are the nodes (like Body, Result etc.) while others are just attributes of previous elements.
Edited (sorry, my last work with ObjectiveC it's really old).
xml namespace
it's aboutelement
and notattributes
.If you didn't get again, try passing by NSXMLNode