2013-12-12 7 views
0

Я работаю над чат-приложением, и в одном месте мне нужно создать nsxmlobject, который имеет структуру xml по желанию.Создайте nsxmlobject iOS для ответа xml,

Код ios Я использовал для простого xml.

NSString* server = @"conference.server.local"; //or whatever the server address for muc is 
XMPPJID *servrJID = [XMPPJID jidWithString:server]; 
XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:servrJID]; 
[iq addAttributeWithName:@"from" stringValue:[xmppStream myJID].full]; 
NSXMLElement *query = [NSXMLElement elementWithName:@"query"]; 
[query addAttributeWithName:@"xmlns" stringValue:@"http://jabber.org/protocol/disco#items"]; 
[iq addChild:query]; 
[xmppStream sendElement:iq]; 

Приведенный выше код используется для создания следующего XML-формата.

<iq from='[email protected]/pda' 
id='yh2fs843' 
to='[email protected]/laptop' 
type='get'> 
<query xmlns='http://jabber.org/protocol/disco#info'/> 
</iq> 

Может ли кто-нибудь помочь мне создать NSXMLElement, который дает мне следующее представление xml.

<iq from='[email protected]/balcony' type='set' id='pip1'> 
<pubsub xmlns='http://jabber.org/protocol/pubsub'> 
<publish node='storage:bookmarks'> 
    <item id='current'> 
    <storage xmlns='storage:bookmarks'> 
     <conference name='The Play&apos;s the Thing' 
        autojoin='true' 
        jid='[email protected]'> 
     <nick>JC</nick> 
     </conference> 
    </storage> 
    </item> 
</publish> 
<publish-options> 
    <x xmlns='jabber:x:data' type='submit'> 
    <field var='FORM_TYPE' type='hidden'> 
     <value>http://jabber.org/protocol/pubsub#publish-options</value> 
    </field> 
    <field var='pubsub#persist_items'> 
     <value>true</value> 
    </field> 
    <field var='pubsub#access_model'> 
     <value>whitelist</value> 
    </field> 
    </x> 
</publish-options> 
</pubsub> 
</iq> 

ответ

1

Вы можете сделать так:

 NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"]; 
     [iq addAttributeWithName:@"type" stringValue:@"set"]; 
     [iq addAttributeWithName:@"id" stringValue:@"pip1"]; 

     [iq addChild:[NSXMLElement elementWithName:@"pubsub" xmlns:@"http://jabber.org/protocol/pubsub"]]; 

     NSXMLElement *publish = [NSXMLElement elementWithName:@"publish"]; 
     [publish addAttributeWithName:@"node" stringValue:@"storage:bookmarks"]; 
     NSXMLElement *item = [NSXMLElement elementWithName:@"item"]; 
     [item addAttributeWithName:@"id" stringValue:@"current"]; 
     [publish addChild:item]; 
     [publish addChild:[NSXMLElement elementWithName:@"storage" xmlns:@"storage:bookmarks"]]; 
     NSXMLElement *conference = [NSXMLElement elementWithName:@"conference"]; 

     [iq addChild:publish]; 
     -- 
     -- 
     --; 

Его не завершена, но я надеюсь, что вы получили представление о том, как это сделать.

+0

Спасибо Bhumeshwer, попробуем. Большое спасибо – Satish

+0

Привет, Бхумешвер, вы можете мне помочь с этим вопросом: http://stackoverflow.com/questions/20793311/xmpp-ios-framework-trying-to-write-it-in-objective-c – DevCali