Попробуйте восстановить после ошибки с TouchXML - PullRequest
0 голосов
/ 14 апреля 2009

Я пытаюсь сделать запрос XPath с помощью 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, подобный этому: // x: div [@ cla

И я получаю:

XPath error : Invalid predicate

1 Ответ

1 голос
/ 18 сентября 2009

Я использую обычный

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