如何在iOS中分隔xml标签中的值



调用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"one_answers"img src"中。怎么做呢?请帮. .

//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);

首先你需要把它转换成合适的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解析。

这解决了我的问题- (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);
 }];

}

最新更新