Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS中的xmpp IQ XML解析_Ios_Xml_Xmppframework - Fatal编程技术网

iOS中的xmpp IQ XML解析

iOS中的xmpp IQ XML解析,ios,xml,xmppframework,Ios,Xml,Xmppframework,我收到了以下XML IQ,并希望在iOS中解析它。请帮忙 <iq type="result"> <stories xmlns="success"> <storyid>1</storyid> <title>THE TITLE</title> <picture>BASE64EncodedStringOfImage<

我收到了以下XML IQ,并希望在iOS中解析它。请帮忙

     <iq type="result">
        <stories xmlns="success">

            <storyid>1</storyid>
            <title>THE TITLE</title>
            <picture>BASE64EncodedStringOfImage</picture>

            <storyid>2</storyid>
            <title>Love At First Site</title>
            <picture>BASE64EncodedStringOfImage</picture>

        </stories>
     </iq>

您正在迭代错误的元素<代码>NSArray*successStoryArray=[stories元素名称:@“storyid]”将获得两个元素:值为1的storyid和值为2的storyid。 然后迭代这些元素并尝试提取title和picture,但title和picture不是的子元素。标题和图片与storyid处于同一级别,它们是的子对象

有两种方法可以解决此问题:

提取3个数组,每个数组都包含storyid、title和picture的值

NSArray *successStoryArray = [stories elementsForName:@"storyid"];
NSArray *titleArray = [stories elementsForName:@"title"];
NSArray *pictureArray = [stories elementsForName:@"picture"];
然后您可以按顺序迭代它们,项目将匹配

更好的是在我看来,通过将每个故事包装在一个元素中来更改XML的结构,如下所示:

     <iq type="result">
        <stories xmlns="success">
          <story>
            <storyid>1</storyid>
            <title>THE TITLE</title>
            <picture>BASE64EncodedStringOfImage</picture>
          </story>
          <story>
            <storyid>2</storyid>
            <title>Love At First Site</title>
            <picture>BASE64EncodedStringOfImage</picture>
          </story>
        </stories>
     </iq>

你试过什么??如果你根本不知道从哪里开始,试试这个@Agent,我已经在上面添加了我已经尝试过的。
     <iq type="result">
        <stories xmlns="success">
          <story>
            <storyid>1</storyid>
            <title>THE TITLE</title>
            <picture>BASE64EncodedStringOfImage</picture>
          </story>
          <story>
            <storyid>2</storyid>
            <title>Love At First Site</title>
            <picture>BASE64EncodedStringOfImage</picture>
          </story>
        </stories>
     </iq>
    NSXMLElement *stories = [iq elementForName:@"stories"];
    NSArray *successStoryArray = [stories elementsForName:@"story"];
    NSLog(@"successStoryArray: %@", successStoryArray);
    for (NSXMLElement *i in successStoryArray)
    {
        NSXMLElement *storyId = [i elementForName:@"storyId"];
        NSString *sId = [storyId stringValue];
        NSLog(@"sId: %@", sId);
        NSXMLElement *title = [i elementForName:@"title"];
        NSString *sTitle = [title stringValue];
        NSLog(@"sTitle: %@", sTitle);
        NSXMLElement *picture = [i elementForName:@"picture"];
        NSString *sPicture = [picture stringValue];
        NSLog(@"sPicture: %@", sPicture);

    }