我正在开发一个rss阅读器,一切正常,除非在我得到的元素的内容中有像(')这样的字符。 我想我应该使用某种字符串函数来替换或改变转义符......
例如,如果在xml中我有:
<desciption>this is John's newspaper</description>
我不知道“这是约翰的报纸”而是“报纸”
这是我的代码:
-(id) loadXMLByURL:(NSString *)urlString
{
rssFeeds = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
xmlParser = [[NSXMLParser alloc] initWithData:data];
[xmlParser setDelegate:self];
[xmlParser parse];
return self;
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementname isEqualToString:@"item"])
{
currentFeed = [rssReader alloc];
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementname isEqualToString:@"title"])
{
currentFeed.rssTitle = str1;
}
if ([elementname isEqualToString:@"description"])
{
currentFeed.rssDescription = currentNodeContent;
}
if ([elementname isEqualToString:@"pubDate"])
{
currentFeed.rsspubDate = currentNodeContent;
}
if ([elementname isEqualToString:@"item"])
{
[rssFeeds addObject:currentFeed];
currentFeed = nil;
currentNodeContent = nil;
}
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[xmlParser rssFeeds] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
INrssCell *cell = (INrssCell *)[tableView dequeueReusableCellWithIdentifier:@"ingrCell"];
rssReader *currectFeed = [xmlParser.rssFeeds objectAtIndex:indexPath.row];
cell.titleLbl.text = currectFeed.rssTitle;
cell.dateLbl.text = currectFeed.rsspubDate;
cell.descLbl.text = currectFeed.rssDescription;
return cell;
}
提前完成。
答案 0 :(得分:0)
XML要求转义某些字符。 例如,你不能放一个'&gt;'字符在或它会混淆解析器。
您可以在HTML中看到此示例。 您正在寻找的逃脱角色是:
’
您需要替换XML中的字符。
<description>this is John’s newspaper</description>
来源: http://htmlhelp.com/reference/html40/entities/special.html
我建议浏览列表并确保XML中没有列出任何字符。
答案 1 :(得分:0)
NSString* contents = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:nil];
// You can pre-process(replace certain characters, ...) content of xml in here.
NSData* data = [contents dataUsingEncoding:NSUTF8StringEncoding];
修改:查看此问题How to parse strings containing ampersands with NSXMLParser?
中的答案