Html 如何在iOS中分离xml标记内的值
调用API时,我得到以下格式的响应:Html 如何在iOS中分离xml标记内的值,html,ios,objective-c,xml,xml-parsing,Html,Ios,Objective C,Xml,Xml Parsing,调用API时,我得到以下格式的响应: 成功 a href='10〕http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'img src='1〕http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'//a 首先,您需要将其转换为正确的ht
成功
a href='10〕http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'img src='1〕http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'//a
首先,您需要将其转换为正确的html格式,如下所示:
NSString *html = @"<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>";
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>
NSString*html=@“a href=”http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'img src='1〕http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/a”;
NSData*stringData=[html数据使用编码:NSUTF8StringEncoding];
NSDictionary*选项=@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType};
NSAttributedString*解码字符串;
decodedString=[[NSAttributedString alloc]initWithData:stringData
选项:选项
文档属性:NULL
错误:NULL];
NSString*finalHtml=[decodedString]//它会回来的
然后从html解析。这可能有助于解决我的问题
-(无效)checkForLINK
{
NSError*error=NULL;
NSString*htmlString=@“html=”;
NSDataDetector*detector=[NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink错误:&错误];
[检测器枚举匹配安装:htmlString
选项:0
范围:NSMakeRange(0,htmlString.length)
usingBlock:^(NSTextCheckingResult*结果,NSMatchingFlags标志,布尔*停止)
{
NSURL*urlStr=result.URL;
NSLog(@“URL=%@”,urlStr);
}];
}:谢谢..这是有效的。但是它适用于上述格式的所有响应吗?:您最终的TML字符串没有返回任何值。它是空的。否,我已检查过。如果您有任何错误,请打印html并检查。我还为finalHtml添加了注释行:实际上,通过使用代码,“NSString*html=[xml.documentRoot getNamedChild:@“ads”].text;”我已经得到了与“finalHtml”中相同的值。我需要的是分离这些值。
NSString *html = @"<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>";
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>
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);
}];