我正在为 xmpp 客户端创建一个测试,并且我需要在此过程中使用不同的自定义节。我有两个问题想知道你们是否可以帮助我:
- 正如我所提到的,我将使用几个具有相同名称但名称空间不同的节。此节也可以是两级或更多,这是一个示例:
第 1 节
<iq type='result' to= 'chat.com' id='id1'>
<aa xmlns='http://mysite.com/profile' >
<name>My name as included in sent mails<name>
<lang>en</lang>
<mail>My mail as included in sent mails</mail>
<fbuserid>46736473231<fbuserid>
<fbaccesstoken>AAAAA84257YTRRIXTEQITXXTCMTVBTTBXU<fbaccesstoken>
<photo_url>http://pic.facebook.com/photo.jpg</photo_url>
</aa>
</iq>
我创建自定义节如下:
name = 'aa'
namespace = 'http://mysite.com/profile'
plugin_attrib = 'aa'
interfaces = set(('name', 'lang', 'mail', 'fbuserid', 'fbaccesstoken', 'photo_url'))
sub_interfaces = interfaces
第 2 节
<iq type='set' to= 'roomname@conference.chat.come' id='id1'>
<aa xmlns='http://mysite.com/muc#share'>
<item name='Falda tubo' thumbnail='http://webpage.info/falda_tn.jpg' id='itemid1' action='add' url='http://webpage.info/falda.html’>
<metadata path=' ' />
</item>
</aa>
</iq>
问题 1:如何创建两个以上级别的节?
如您所见,我的节具有相同的名称但更改了名称空间,这给我带来了一些麻烦,因为我创建了诸如 get_* 和 set_* 之类的方法来处理信息,但它的执行方式如下:
register_stanza_plugin(Iq, stanza_profile) register_stanza_plugin(Iq, stanza_rooms) def start(self, event): self.send_presence() self.get_parameters() self.set_parameters()
这注册了两个节,但仅在最后一个(stanza_rooms)中执行操作
问题2:如何分开处理?
在 python 上工作。任何帮助表示赞赏!
此致,