2009-04-14 4 views
0

Я пытаюсь сделать запрос XPath с TouchXML, но если запрос завершился неудачно, программа немедленно сработает.Попытайтесь исправить ошибку с помощью TouchXML

Есть ли способ предотвратить это и продолжить выполнение программы.

Я знаю, что TouchXML основан на libxml2 и что у lib есть опция под названием XML_PARSE_RECOVER, но я не знаю, как ее использовать с TouchXML.

Исходный код

- (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; 
} 

Я пытаюсь сделать неправильный XPath запрос так: // х: DIV [@cla

И я получаю:

XPath error : Invalid predicate 
+0

Можете ли вы опубликовать код, который вы используете, и e детали аварии? Я не использовал TouchXML, но кажется, что что-то не так, если оно рушится. –

+0

Это только если я выполняю неправильный запрос XPath: например '// x: div [@ cla' – 2009-04-14 13:10:51

ответ

1

я использую a нормальный

@try { 
    ... 
} @catch (NSException *e) { 
    ... 
} 
Смежные вопросы