2009-04-14 3 views
0

TouchXMLで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 
+0

あなたが使用しているコードを投稿できますかeの詳細は?私はTouchXMLを使用していないが、クラッシュすると何かが間違っているように聞こえる。 –

+0

間違ったXPathクエリを実行する場合のみです: '// x:div [@ cla' –

答えて

1

私が使用しています通常の

@try { 
    ... 
} @catch (NSException *e) { 
    ... 
} 
関連する問題