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或答案请
答
命名空间用于定义Stanza(数据包)的“用法/范围”。 它们用于定义功能并绑定动作(解析器,列表器等),因此任何API都可以通过tagName和名称空间添加行为(默认或自定义)。
所以一个命名空间它的使用就像一个保留密钥的协议。
使用自定义名称空间,可以定义自定义IQ(或其他任何东西),并有自定义逻辑/解析器等,以便在需要时触发exaclty并根据需要获得n个自定义操作。
官方文档:
https://datatracker.ietf.org/doc/rfc6120/?include_text=1
多:
UPDATE:编辑的问题。如果我发送一个空字符串,那么我能够获得子元素。像元素theInfo = recvPresence.getChildElement(“someInfo”,“”);.不过,我仍然需要一些关于理解xmpp命名空间的信息。任何ref ..链接等 – SaffronState