1

こんにちは、私は xmpp で作業していますが、すべて正常に動作していますが、xml の下で解析できません。

<message
xmlns="jabber:client" to="919452544@server" id="859e7-870" type="chat" from="917696997127@server/Smack">
<body>Broadcast</body>
<properties
    xmlns="http://www.jivesoftware.com/xmlns/xmpp/properties">
    <property>
        <name>stream</name>
        <value type="string">8d879bea44f792468d6ecad161d3e545</value>
    </property>
    <property>
        <name>date</name>
        <value type="string">2016-05-05 10:36:25</value>
    </property>
    <property>
        <name>broadcast</name>
        <value type="string">Broadcast</value>
    </property>
</properties>
</message>

上記の xml では、最初に body が Broadcast と等しいことを確認する必要があります。<name>stream</name><value type="string">8d879bea44f792468d6ecad161d3e545</value> 次に、上記のxmlで名前と値を取得する方法を解析する必要があります。私はこのように試しましたが、条件が成功するたびに、以下は私のコードです

 if ([message elementsForName:@"name"] ) {
    NSArray *nameArray=[message elementsForName:@"name"];
    NSLog(@"name Broadcast  %@",nameArray);

}

しかしnameArrayは常に空です。助けてください

4

1 に答える 1

1

これを試してください... <name>stream</name>配列要素であり、<property>... <\property>NSArrayです

NSXMLElement *properties = [message elementForName:@"properties"];
NSArray *property = [properties elementsForName:@"property"];
NSLog(@"property: %@", property);

//loop to get name and value
for (NSXMLElement *i in property)
{
    NSXMLElement *name = [i elementForName:@"name"];
    NSString *n = [name stringValue];
    NSLog(@"name: %@", n);
    // like wise you can get value
}
于 2016-05-06T08:34:36.747 に答える