0

TouchXMLでXPath クエリを作成しようとしていますが、クエリが失敗すると、プログラムはすぐにクラッシュします。

これを防ぎ、プログラムの実行を継続する方法はありますか?

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
4

1 に答える 1

1

私は通常を使用しています

@try {
    ...
} @catch (NSException *e) {
    ...
}
于 2009-09-18T13:31:50.843 に答える