2014-11-24 53 views
-1

我有一个来自nimbuzz聊天应用程序的xml代码,它使用input关键字在nimbuzz服务器中搜索chatroom。从python的xml代码获取结果

<iq type="set" id="Nimbuzz_SearchRooms" to="conference.nimbuzz.com"><query xmlns="jabber:iqearch"><set xmlns="http://jabber.org/protocol/rsm"><index>0</index><max>10</max></set><x type="get" xmlns="jabberata"><field var="name"><value>**INPUT KEYWORD FOR ROOM NAME**</value></field><field var="include_password_protected"><value>true</value></field></x></query></iq> 

的代码工作,我得到下面的结果作为XML代码:

看到图像:

The result code image

我开始使用此代码,但我可以完成它,因为我不明白它是如何工作的:

def handler_search_room(type, source, parameters): 
    Key_word = raw_input("Please write the Key word: ") 
    if parameters.split(): 
     iq = xmpp.Iq('set') 
     iq.setID('Nimbuzz_SearchRooms') 
     iq.setTo('conference.nimbuzz.com) 

我需要将第一个代码发送到nimbuzz服务器,然后我需要获得每个Chatroom的信息结果。 结果代码应该得到每个聊天室这样的信息:

  • 主题。

  • NUM_USERS

  • num_max_users

  • is_passowrd_protected

  • is_member_only

  • 语言

  • 位置型

  • 位置

我如何能做到这一点与Python?如果有人能帮我做我的代码,我会很高兴。

下载的XML代码,如果你想:

http://qfs.mobi/f1833350

回答

0
def handler_akif_room(type, source, parameters): 
     room = parameters 
     if parameters.split(): 
     iq = xmpp.Iq('set') 
     iq.setID('Nimbuzz_SearchRooms') 
       iq.setTo('conference.nimbuzz.com') 
       query = xmpp.Node('query') 
       query.setNamespace('jabber:iq:search') 
       iq.addChild(node=query) 

       sett = xmpp.Node('set') 
       sett.setNamespace('http://jabber.org/protocol/rsm') 
       query.addChild(node=sett) 

       sifir = "0" 
       ind = xmpp.Node('index') 
       ind.setData(sifir) 
       sett.addChild(node=ind) 

       on = "10" 
       maxx = xmpp.Node('max') 
       maxx.setData(on) 
       sett.addChild(node=maxx) 

       qqx = xmpp.Node('x') 
       qqx.setNamespace('jabber:x:data" type="get') 
       query.addChild(node=qqx) 

       field = xmpp.Node('field') 
       field.setAttr('var','name') 
       field.setData(' ') 
       qqx.addChild(node=field) 

       valueone = xmpp.Node('value') 
       valueone.setData(room) 
       field.addChild(node=valueone) 



       fieldtwo = xmpp.Node('field') 
       fieldtwo.setAttr('var','include_password_protected') 
       fieldtwo.setData(' ') 
       qqx.addChild(node=fieldtwo) 

       valuetwo = xmpp.Node('value') 
       valuetwo.setData('true') 
       fieldtwo.addChild(node=valuetwo) 


     JCON.SendAndCallForResponse(iq, handler_akif_room_answ, {'type': type, 'source': source}) 
     msg(source[1], u''+str(iq)+' .') ## <= OUT SHOW :)) GOOD WORK! CONTACT ME [email protected] :)