2009-04-14 6 views
0

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 
+0

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. –

+0

C'est seulement si j'exécute une mauvaise requête XPath: comme '// x: div [@ cla' –

Répondre

1

J'utilise un normal

@try { 
    ... 
} @catch (NSException *e) { 
    ... 
} 
Questions connexes