我正在收到最新的推文并在我的应用中显示。我把它放在一个NSMutableString中,并在我的xmlparser.m文件中初始化该字符串,如下所示:
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
我可以收到推文但不知何故它会削减一些推文并显示部分内容。例如,推文是
教室里的电子游戏?社交媒体& #technology可以改变教育http://bit.ly/KfGViF @GOVERNING #edtech
但它显示的是:
#technology可以改变教育http://bit.ly/KfGViF @GOVERNING #edtech
为什么你认为它是?我尝试以其他方式初始化currentNodeContent,但我无法解决问题。
你知道为什么会这样吗?
答案 0 :(得分:1)
事件驱动(SAX)解析器可以自由返回回调中节点的部分文本。您可能只是传入的推文的一部分。您应该在可变字符串中累积字符,直到您获得指示元素结尾的回调。请参阅清单3以及this guide中的周围文本。
答案 1 :(得分:0)
你有两个问题:
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
简单地将NSString
投射到NSMutableString
不起作用。您必须自己制作可变副本,或使用NSMutableString
的内容初始化新的NSString
。
此外,文本解析器只提供字符串的最后一部分,因为它可能只是将“&
”解释为实体引用的一部分,或者它本身可能是实体引用。
您可能想要做的是:
在开始解析之前,请初始化currentNodeContent
,使其为空NSMutableString
:
currentNodeContent = [NSMutableString string];
在解析时,将字符附加到currentNodeContent
:
[currentNodeContent appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];