IOS Cómo encontrar el enlace completo de RSS con la clase nsscanner
objective-c xml-parsing (2)
Eso es porque
[NSCharacterSet characterSetWithCharactersInString:@"/>"];
contiene caracteres "/" que es el último caracter de http: / / y también el caracter justo después de feeds.abcnews.com.
Editar: Aquí hay un campo de juego que muestra el enfoque que podría tomar. (No completamente probado)
Está en Swift, pero la API es la misma en Obj-C.
var str = "<link rel=/"alternate/" type=/"application/rss+xml/" title=/"RSS Feed/" href=/"http://feeds.abcnews.com/abcnews/topstories/" />";
var scanner = NSScanner.init(string: str);
var result: NSString? = nil
scanner.scanUpToString("href=/"", intoString: nil);
scanner.scanString("href=/"", intoString: nil);
scanner.scanUpToString("/" />", intoString: &result);
Estoy trabajando en la obtención de datos del proyecto basado en la alimentación rss.Desde la búsqueda en google, encontré que generalmente el enlace RSS se encuentra en este formato en la fuente de HTML.
<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="http://feeds.abcnews.com/abcnews/topstories" />
entonces, tengo que usar la clase nsscanner para encontrar el enlace de la fuente RSS desde la fuente HTML. pero no conozco el patrón correcto y tengo que configurar scanUpToString:
y haracterSetWithCharactersInString:
o etc. Así que, por favor, haracterSetWithCharactersInString:
a encontrar el enlace completo de RSS.
Aquí está mi intento:
- (void)viewDidLoad {
NSString *googleString = @"http://abcnews.go.com/";
NSURL *googleURL = [NSURL URLWithString:googleString];
NSError *error;
NSString *googlePage = [NSString stringWithContentsOfURL:googleURL encoding:NSASCIIStringEncoding
error:&error];
NSLog(@"%@",[self yourStringArrayWithHTMLSourceString:googlePage]);//will return NSMutableArray
}
-(NSMutableArray *)yourStringArrayWithHTMLSourceString:(NSString *)html
{
NSString *from = @"<a href=/"";
NSString *to = @"</a>";
NSMutableArray *array = [[NSMutableArray alloc]init];
NSScanner* scanner = [NSScanner scannerWithString:html];
[scanner scanUpToString:@"<link" intoString:nil];
if (![scanner isAtEnd]) {
NSString *url = nil;
[scanner scanUpToString:@"RSS Feed" intoString:nil];
NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@"/>"];
[scanner scanUpToCharactersFromSet:charset intoString:nil];
[scanner scanCharactersFromSet:charset intoString:nil];
[scanner scanUpToCharactersFromSet:charset intoString:&url];
NSLog(@"%@",url);
// "url" now contains the URL of the img
}
return array;
}
actualmente puedo encontrar solo un enlace con este código.
salida:
Pero el enlace completo es:
http://feeds.abcnews.com/abcnews/topstories
Use etiquetas de "enlace" en lugar de "a" de esta referencia.
Referencia: expresión regular en ios para extraer href url y descartar el resto de la etiqueta de anclaje