2013-04-03 36 views
0

因此,我正在制作一个应用程序,其中的一部分显示用户在表格视图中的推文。但是有什么东西越来越损坏了一些微博等作为其唯一的显示,如(“),单个字符或表情符号字符例如,如果推特说:Twitter的Feed没有显示完整的推文

RT @jakemillermusic: Everyone upload your pics that you took today during the ustream and caption it "follow @jakemillermusiC#jakemiller"

时的NSLog显示它打印:


2013年4月3日00:34:30.476 ParsingXMLTutorial [3308:C07] RT @jakemillermusic:每个人都上传你的照片,你的USTREAM和字幕中今天把它

2013年4月3日00 :34:30.476解析XMLTuto里亚尔[3308:C07]“

2013年4月3日00:34:30.477 ParsingXMLTutorial [3308:C07]按照@jakemillermusiC#jakemiller

2013年4月3日00:34:30.478 ParsingXMLTutorial [3308: C07]“


下面是我使用来获取XML格式的网址:

http://api.twitter.com/1/statuses/user_timeline/LexxiSaal.xml?include_entities=true&include_rts=true&screen_name=twitterapi&trim_user=false&contributor_details=true&count=50


继承人的解析代码:

-(id) loadXMLByURL:(NSString *)urlString 
{ 
    _tweets   = [[NSMutableArray alloc] init]; 
    NSURL *url  = [NSURL URLWithString:urlString]; 
    NSData *data = [[NSData alloc] initWithContentsOfURL:url]; 
    parser   = [[NSXMLParser alloc] initWithData:data]; 
    parser.delegate = self; 
    [parser parse]; 
    return self; 
} 

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    //string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];   // space 
    string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""]; // newline 
    string = [string stringByReplacingOccurrencesOfString:@"\t" withString:@""]; 


currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
} 

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if ([elementname isEqualToString:@"status"]) 
    { 
     currentTweet = [Tweet alloc]; 
     isStatus = YES; 
} 
if ([elementname isEqualToString:@"user"]) 
{ 
    isStatus = NO; 
} 
} 

    - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName 
    { 
     if (isStatus) 
     { 
      if ([elementname isEqualToString:@"created_at"]) 
      { 
       currentTweet.dateCreated = currentNodeContent; 
      } 
      if ([elementname isEqualToString:@"text"]) 
      { 
       currentTweet.content = currentNodeContent; 
      } 
     } 
    if ([elementname isEqualToString:@"status"]) 
    { 
     [self.tweets addObject:currentTweet]; 
     currentTweet = nil; 
     currentNodeContent = nil; 
    } 
} 

@end 
+1

把你解析代码 – iphonic

+0

你去那里@iphonic –

回答

0

我会建议一些变化如下

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    NSString *value=[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]; 

    if(currentNodeContent == nil){ 
     currentNodeContent = [[NSMutableString alloc] initWithString:value]; 
    }else 
     [currentNodeContent appendString:value]; 
} 

didEnd

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if (isStatus) 
    { 
     if ([elementname isEqualToString:@"created_at"]) 
     { 
      currentTweet.dateCreated = currentNodeContent; 
     } 
     if ([elementname isEqualToString:@"text"]) 
     { 
      currentTweet.content = currentNodeContent; 
     } 
    } 
    if ([elementname isEqualToString:@"status"]) 
    { 
     [self.tweets addObject:currentTweet]; 
     currentTweet = nil; 
     //currentNodeContent = nil; REMOVED 
    } 

    currentNodeContent = nil; // PUT OUTSIDE 
} 

是你必须追加的方法串的事情foundCharacters,因为解析器不会一次返回标签之间的所有字符串。

最后,您应该在全局didEnd方法中制作currentNodeContent无,因为您也将它用于其他文本。上述

希望帮助..

+0

完美非常感谢你@iphonic –

相关问题