有没有办法让NSXMLParser在解析XML时忽略“&amp”和类似符号?

问题描述:

我目前正在对其进行解析时有两个元素之间像这样的字符串的XML文件:有没有办法让NSXMLParser在解析XML时忽略“&amp”和类似符号?

你好&再见

当foundCharacters委托被调用它解析这样的信息....

它解析:

你好 & 再见

它MAK es 3调用解析该元素,并最终得到3个字符串,而不是1个字符串。有没有办法检测到这一点,而不必将字符串附加在一起,并保留一个委托人被调用了多少次的计数器?

任何帮助是非常赞赏...

简短的回答:不,那是,它的返回三根弦,它可能返回串11的所有一个字符长,如果它想唯一的机会。这取决于你将字符串连接在一起。

长答案:您需要追加一个字符串。你无能为力。不过,我不明白为什么你需要保持的时间委托已被调用次数的计数 - 我认为这个代码应该做你想要什么:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { 
    // Make a new string to hold the data 
    [currentString release]; 
    currentString = [NSMutableString alloc] init]; 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    // Add the string to our current string 
    [currentString appendString:string]; 
} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    // In here, current string should be it's entire contents, 
    NSLog(@"%@", currentString); 
} 

您将需要一个成员在类来保存数据 - 一个可变的字符串是最简单的一个:

@interface MyClass : NSObject { 
    NSMutableString *currentString; 
} 
@end 

(它并不需要是一个属性,但你需要记住释放它在你的dealloc方法)

+0

大谢谢非常。我只是觉得它非常奇怪的行为,因为它调用foundCharacters方法,当它碰到&符号时。但是,这完成了我所需要的。非常感谢你 – Toret 2010-09-30 17:23:29