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