gpt4 book ai didi

iOS NSXMLParser - 一致地从 XML 标签派生图像源 URL

转载 作者:行者123 更新时间:2023-11-29 01:18:17 25 4
gpt4 key购买 nike

我正在我的应用程序中使用 RSS 提要,特别是 Drudge Report 的提要。我对这类东西很陌生,同时也是使用 Xcode 的 NSXMLParser 的新手。 .每个提要显然代表一篇文章。每个提要由 <item></item> 表示标签。

在这些标签中,有 <description></description> 所包含信息的描述。标签。在描述中,某些文章可能具有与该文章关联的图像,如以下屏幕截图所示:

enter image description here

我突出显示的部分是我需要获取的图像(具体来说,URL 字符串)。我能够将每篇文章的描述导出为 NSMutableString ,但是当我使用 NSXMLParser 解析 XML 时如何导出图像的 URL?以下是我如何完成所有这些工作的代码:

@interface ViewController () <NSXMLParserDelegate, UITableViewDataSource, UITableViewDelegate> {
NSXMLParser *parser;
NSMutableArray *feeds;
NSMutableDictionary *item;
NSMutableString *title;
NSMutableString *link;
NSMutableString *description;
NSString *element;
}
.
.(other code)
.
#pragma mark - NSXMLParserDelegate

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
element = elementName;
if ([element isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
title = [[NSMutableString alloc] init];
link = [[NSMutableString alloc] init];
description = [[NSMutableString alloc] init];
}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

if ([element isEqualToString:@"title"]) {
[title appendString:string];
}
else if ([element isEqualToString:@"feedburner:origLink"]) {
[link appendString:string];
}
else if ([element isEqualToString:@"description"]) {
[description appendString:string];
}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

if ([elementName isEqualToString:@"item"]) {
NSString *filteredTitle = [title stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *filteredLink = [link stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if (![filteredLink containsString:@"https://itunes.apple.com/"]) {
[item setObject:filteredTitle forKey:@"title"];
[item setObject:filteredLink forKey:@"link"];
[item setObject:description forKey:@"description"];

[feeds addObject:[item copy]];
}
}
}

- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.tableView reloadData];
}

进展

到目前为止,我在我的 didEndElement 中添加了以下内容方法:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

if ([elementName isEqualToString:@"item"]) {
NSString *filteredTitle = [title stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *filteredLink = [link stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if (![filteredLink containsString:@"https://itunes.apple.com/"]) {
[item setObject:filteredTitle forKey:@"title"];
[item setObject:filteredLink forKey:@"link"];
[item setObject:description forKey:@"description"];
if ([description rangeOfString:@"img style"].location != NSNotFound)
{

}

[feeds addObject:[item copy]];
}
}
}

现在我知道描述中有 img style字符串,我需要得到 src="whateverImageURL" .如何使用正则表达式获取此图像 URL 的第一次出现?

最佳答案

您必须在您的网站上执行以下操作

foundCharacters: method.

   else if ([element isEqualToString:@"description"]) 
{
[description appendString:string];
if ([description rangeOfString:@"img"].location != NSNotFound)
{
NSRange firstRange = [previewImage rangeOfString:@"src="];
NSRange endRange = [[previewImage substringFromIndex:firstRange.location] rangeOfString:@" width=\""];
NSString *finalLink = [[NSString alloc] init];
finalLink = [previewImage substringWithRange:NSMakeRange(firstRange.location, endRange.location)];
NSString *match = @"src=\"";
NSString *postMatch;
NSScanner *scanner = [NSScanner scannerWithString:finalLink];
[scanner scanString:match intoString:nil];
postMatch = [finalLink substringFromIndex:scanner.scanLocation];
NSString *finalURL = [postMatch stringByAppendingString:@""];
description = finalURL;
}
}
}
  • 因为在你的 foundCharacters 中你已经得到了描述标签你需要在你的描述数组中搜索你追加的文本字符串。
  • 你可以通过扫描整个字符串然后存储所需的来做到这一点变量中的子字符串...即您的 URL 链接
  • 使用 firstRange 变量设置 ull 获取字符串的范围
  • 和 endrange 变量来设置文本直到你想要字符串结束的地方(在你的例子中是 url)

这里我将 URL 存储在 previewImage 中。

希望它对你好运有用.....

关于iOS NSXMLParser - 一致地从 XML 标签派生图像源 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com