【问题标题】:how to separate values inside an xml tag in iOS如何在iOS中的xml标签内分隔值
【发布时间】:2015-07-28 07:28:28
【问题描述】:

调用 API 时,我收到以下格式的响应:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<response>
    <status>success</status>
    <ads>&lt;a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'&gt;&lt;img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/&gt;&lt;/a&gt;</ads>
</response>

我正在检索标签内的整个值并存储在一个字符串中。下面是它的代码:

 NSString *html = [xml.documentRoot getNamedChild:@"ads"].text;

现在我需要将值分别存储在“ads”标签的“href”和“img src”中。如何做到这一点?请帮助..

【问题讨论】:

    标签: html ios objective-c xml xml-parsing


    【解决方案1】:
    //as the data you have provided
    
    NSString *html =@"&lt;a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'&gt;&lt;img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/&gt;&lt;/a&gt";
    
    
    
        NSString *href;
        NSString *img_src;
        NSRange range = [html rangeOfString:@"href=\'"];
        NSString  *tempUrl=[html substringFromIndex:range.location+6];
        NSRange range2 = [tempUrl rangeOfString:@"\'"];
        href=[tempUrl substringWithRange:NSMakeRange(0, range2.location)];
    
        range = [html rangeOfString:@"img src=\'"];
        tempUrl=[html substringFromIndex:range.location+9];
        range2 = [tempUrl rangeOfString:@"\'"];
        img_src=[tempUrl substringWithRange:NSMakeRange(0, range2.location)];
    
    
    
        NSLog(@"your href is %@ and your img_src is %@",href,img_src);
    

    【讨论】:

    • :thankyou..this is working .但它适用于上述格式的每个响应吗?
    【解决方案2】:

    首先,您需要将其转换为正确的 html 格式,如下所示:

    NSString *html = @"&lt;a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'&gt;&lt;img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/&gt;&lt;/a&gt;";
    
    NSData *stringData = [html dataUsingEncoding:NSUTF8StringEncoding];
    
    NSDictionary *options = @{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType};
    NSAttributedString *decodedString;
    decodedString = [[NSAttributedString alloc] initWithData:stringData
                                                     options:options
                                          documentAttributes:NULL
                                                       error:NULL];
    
    NSString *finalHtml = [decodedString string]; //it will return <a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'><img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/></a>
    

    然后从 html 解析。它可能会有所帮助

    【讨论】:

    • :你的 finalHtml 字符串没有返回任何值。它是空的
    • 不,我已经检查过了。打印 html 并检查,如果您犯了任何错误。我还为 finalHtml 添加了注释行
    • :实际上通过使用代码,,"NSString *html = [xml.documentRoot getNamedChild:@"ads"].text;"我已经得到了与“finalHtml”中相同的值。什么我需要的是分隔值。
    【解决方案3】:

    这解决了我的问题 - (void) checkForLINK

    {

    NSError *error= NULL;
    
    NSString* htmlString = @" html=<a href='http://52.7.43.135/oapi/clickAd;jsessionid=4373A2D1CC3FAE62BDF57033C385ADC7.soma-i-65e6329b'><img src='http://52.7.43.135/oapi/getAd;jsessionid=4373A2D1CC3FAE62BDF57033C385ADC7.soma-i-65e6329b'/></a>";
    
    
    
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
    
    
    
    [detector enumerateMatchesInString:htmlString
    
                               options:0
    
                                 range:NSMakeRange(0, htmlString.length)
    
                            usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
    
     {
    
         NSURL * urlStr = result.URL;
    
    
    
         NSLog(@"URL = %@",urlStr);
    
     }];
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 2020-03-22
      • 2011-04-13
      • 1970-01-01
      • 2020-11-21
      相关资源
      最近更新 更多