我有一个xml标记<“text>”,其中包含以下文字:
Федя。 Онхороший,добрый,энергичныйпёс,которомуотчаяннонехватает удачи.Никтоуже,никогданеузнает,чтослучилосьсФедей..“wall of 文字“。
8-910-444-59-42Лариса
当我想从那个标签中取出那个文本时我只得到最后一个,因为那个标签我只得到了“Лариса”。
我的问题是如何修复它以便我可以看到全文?也许以某种方式与“br”标签相关联?所有其他标签提取得很好,但不是这个..
#pragma mark - XML PARSER DELEGATE METHODS
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"description"]) isDescription = YES;
if ([elementName isEqualToString:@"text"]) isText = YES;
if ([elementName isEqualToString:@"name"]) isName = YES;
if ([elementName isEqualToString:@"shortText"]) isShortText = YES;
if ([elementName isEqualToString:@"images"]) isImage = YES;
if ([elementName isEqualToString:@"announcement"]){
self.currentPosition = [NSMutableDictionary dictionary];
self.imageUrlString = nil;
}
if ([elementName isEqualToString:@"image"])
{
NSString *name = attributeDict[@"name"];
if ([name isEqualToString:@"prev"]&& self.imageUrlString == nil)
{
NSString *urlString = attributeDict[@"url"];
if (urlString)
{
// NSLog(@"%@ found it", urlString);
self.imageUrlString = urlString;
[self.listOfImages addObject:self.imageUrlString];
}
}
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"description"]) isDescription = NO;
if ([elementName isEqualToString:@"text"]) isText = NO;
if ([elementName isEqualToString:@"name"]) isName = NO;
if ([elementName isEqualToString:@"shortText"]) isShortText = NO;
if ([elementName isEqualToString:@"images"]) isImage = NO;
if ([elementName isEqualToString:@"announcement"]){
[self.listOfItems addObject:self.currentPosition];
}
}
-(void)parserDidEndDocument:(NSXMLParser *)parser{
[self.delegate didFinishParsingToArray:self.listOfItems];
[self.delegate didFinishParsingToImages:self.listOfImages];
// NSLog(@"%@", self.currentPosition);
// NSLog(@"%@ Its work", self.listOfImages);
}
-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string{
if (isDescription) [self.currentPosition setValue:string forKey:@"description"];
if (isText) [self.currentPosition setValue:string forKey:@"text"];
if (isName) [self.currentPosition setValue:string forKey:@"name"];
if (isShortText) [self.currentPosition setValue:string forKey:@"shortText"];
}
答案 0 :(得分:2)
-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string
实施中的问题。在这个方法中,你需要为每个已解析的标记附加找到的字符串,但是在你的实现中你设置了每个找到的字符串,实际上是找到的字符串的最后一个(对于单个标记,这个方法可以被多次调用)。
使用以下内容更改您的代码:
if (isText) {
if (currentPosition[@"text"])
{
NSMutableString *str = currentPosition[@"text"]
[str appendString:string];
}
else
{
[self.currentPosition setValue:[NSMutableString stringWithString:string] forKey:@"text"]
}
};
注意:您可以获得XML示例问题?我想测试我的XMLConverter。