如果标签有口音,NSXMLParser不会获得所有的标签
我有一个Web服务与数据库不同的变化。 当我使用sql标签消费webservice返回行,如下所示:
<sql> DELETE FROM TABLE WHERE ... </sql> <sql> INSERT INTO TABLE WHERE ... </sql> <sql> UPDATE TABLE SET ... WHERE ... </sql>
我将这些代码保存在NSMutableArray中,如下所示:
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([elementName isEqualToString:@"sql"]){ [maResultado addObject:[NSMutableString stringWithFormat:@"%@", ResultadoSoap]]; [ResultadoSoap setString:@""]; } }
这很好,但是如果webservice返回一个带重音的单词(由于是西class牙语的重音),应用程序只能得到重音后的短语。 例如:web服务返回这个:
<sql> INSERT INTO DATOS(datos, fecha) VALUES('Indagar si el médico a tenido oportunidad de ...', '20/02/2013') </sql>
我这样做:
if ([elementName isEqualToString:@"sql"]){ [maResultado addObject:[NSMutableString stringWithFormat:@"%@", ResultadoSoap]]; [ResultadoSoap setString:@""]; }
而在objectResdex中的maResultado只有这个:
édico a tenido oportunidad de ...', '20/02/2013')
parser:foundCharacters:
可以为XML元素多次调用delegate函数。 如果字符内容包含特殊字符,则会发生这种情况。 在你的情况下,为数据
<sql> INSERT INTO DATOS(datos, fecha) VALUES('Indagar si el médico a tenido oportunidad de ...', '20/02/2013') </sql>
委托函数被调用两次,首先与string
INSERT INTO DATOS(datos, fecha) VALUES('Indagar si el m
然后再与string
édico a tenido oportunidad de ...', '20/02/2013')
因此,你必须在parser:foundCharacters:
追加stringparser:foundCharacters:
到当前string,例如
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { [currentElementValue appendString:string]; }