尝试使用TouchXML从错误中恢复

时间:2009-04-14 12:33:35

标签: iphone libxml2 touchxml

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

我正常使用

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