我的NSXMLParser打破了这个字符串:
<title>AAA – BCDEFGQWERTYUIO</title>
我用这种方式解析它,希望是正确的方法:
- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{
[...]
if ([currentElement isEqualToString:@"title"]) {
if (![string isEqualToString:@""]) {
[title addObject:string];
NSLog(@"str: %@", string);
}
}
它让我回复:
str :AAA
str : -
str :BCDEFGQWERTYUIO
但我想返回一个字符串:
str :AAA - BCDEFGQWERTYUIO
因为它是正确的标题。
有什么想法吗?
感谢。
答案 0 :(得分:1)
我发现最好在didEndElement方法中创建对象。这样你就可以继续将字符串数据附加到一些临时字符串。所以你可能会做类似下面的事情(注意:代码没有经过测试)
在你的对象标题中:
NSMutableString *currentElementData;
...
@property (nonatomic, retain) NSMutableString *currentElementData;
在你的解析代码中你会有
- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{
[...]
if ([currentElement isEqualToString:@"title"]) {
[currentElementData appendString:string];
}
}
然后在你的元素中结束
- (void) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName...{
[...]
if ([elementName isEqualToString:@"title"]) {
[title addObject:currentElementData];
[currentElementData setString:@""];
}
}
答案 1 :(得分:0)
您可以在xml中使用CDATA部分,因为 像“&lt;”这样的字符和“&amp;”在XML元素中是非法的。
“&LT;”将生成错误,因为解析器将其解释为新元素的开头。
“&安培;”将生成错误,因为解析器将其解释为字符实体的开头。