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 回答