質問

I am working on the chat application and at one place i need to create nsxmlobject which has the xml structure as desired.

ios code i used for the simple 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];

The above code is used to create the following xml format.

<iq from='hag66@shakespeare.lit/pda'
id='yh2fs843'
to='wiccarocks@shakespeare.lit/laptop'
type='get'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

can anyone please help me to create the NSXMLElement which gives me the following kind of xml representation.

 <iq from='juliet@capulet.lit/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='theplay@conference.shakespeare.lit'>
        <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>
役に立ちましたか?

解決

You can do like this:

     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];
        --
        --
        --;

Its not completed, but I hope you got an idea how to do it.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top