J'essaie de faire une requête XPath avec TouchXML, mais si la requête échoue, le programme se bloque immédiatement.Essayez de récupérer à partir d'une erreur avec TouchXML
Est-il possible d'empêcher cela et de poursuivre l'exécution du programme?
Je sais que TouchXML est basé sur libxml2 et que lib a une option appelée XML_PARSE_RECOVER
mais je ne sais pas comment l'utiliser avec TouchXML.
code source
- (id)initWithData:(NSData *)d
{
if (![super init])
return nil;
NSError *error;
translation = [[WRTranslation alloc] init];
parser = [[CXMLDocument alloc] initWithData:d options:0 error:&error];
if (error)
NSLog(@"initWithData error = true");
return self;
}
- (void)dealloc
{
NSLog(@"dealloc de WRTouchParser = %@", self);
[translation release];
[parser release];
[super dealloc];
}
- (BOOL)queryData:(NSString *)s
{
// Nécessaire pour faire une requête. Exemple : //x:div[@class="se"]
NSDictionary *mappings = [NSDictionary dictionaryWithObject:@"http://www.w3.org/1999/xhtml" forKey:@"x"];
NSArray *res = [parser nodesForXPath:s namespaceMappings:mappings error:nil];
queryResult = [res description];
return YES;
}
J'essaie de faire une requête XPath mal comme ça: // x: div [@cla
Et je reçois:
XPath error : Invalid predicate
Pouvez-vous poster le code que vous utilisez et Les détails de l'accident? Je n'ai pas utilisé TouchXML mais il semble que quelque chose ne va pas si ça plante. –
C'est seulement si j'exécute une mauvaise requête XPath: comme '// x: div [@ cla' –