getChildElement包中的Openfire XMPP组件名称空间

问题描述:

通过遵循一些教程,我设法编写了一个服务器组件(Openfire)和客户端iOS应用程序(使用robbiehanson的ios xmppframeowrk),作为XMPP和Java(我是iOS开发人员)的新手。我可以通过组件< - > iOS客户端发送和接收消息。这里是一个抽象的代码:getChildElement包中的Openfire XMPP组件名称空间

从iOSclient应用发送存在于服务器组件:

XMPPPresence *presence = [XMPPPresence presence]; 
[presence addAttributeWithName:@"to" stringValue:serverComponentJid]; 
NSXMLElement *someInfo = [NSXMLElement elementWithName:@"someInfo" 
               stringValue:@"xyz"]; 
[presence addChild:someInfo]; 
[_xmppStream sendElement:presence]; 

在服务器组件接收分组:

if (packet instanceof Presence){ 
     org.xmpp.packet.Presence recvPresence = (Presence) packet; 

Element theInfo = recvPresence.getChildElement("someInfo", "***what_shoud_be_the_namespace_here***"); 
System.out.println("Some info in the presence as " + theInfo.attributeValue("someInfo")); 

我可以打印该数据包并看到someInfo。当我在命名空间中传递“”时,我能够正确地理解这是可以理解的。不过,我仍然不明白在xmpp中使用命名空间的方式和方式。任何指南,tut,链接,ref或答案请

+0

UPDATE:编辑的问题。如果我发送一个空字符串,那么我能够获得子元素。像元素theInfo = recvPresence.getChildElement(“someInfo”,“”);.不过,我仍然需要一些关于理解xmpp命名空间的信息。任何ref ..链接等 – SaffronState

命名空间用于定义Stanza(数据包)的“用法/范围”。 它们用于定义功能并绑定动作(解析器,列表器等),因此任何API都可以通过tagName和名称空间添加行为(默认或自定义)。

所以一个命名空间它的使用就像一个保留密钥的协议。

使用自定义名称空间,可以定义自定义IQ(或其他任何东西),并有自定义逻辑/解析器等,以便在需要时触发exaclty并根据需要获得n个自定义操作。

官方文档:

https://datatracker.ietf.org/doc/rfc6120/?include_text=1

多:

http://xmpp.org/extensions/index.html