2013-03-23 2 views
0

Я создаю динамическую библиотеку для iPhone (для Cydia) и пытаюсь использовать TouchXML для анализа XML. Когда я называю этот методОшибка сбоя утверждения

+(NSArray *)initWithXMLfromData:(NSData *)data withRootElement:(NSString *)rootElement{ 
NSError *err; 
CXMLDocument *parser = [[CXMLDocument alloc] initWithData:data options:0 error:&err]; 
NSArray *xml = [parser nodesForXPath:[NSString stringWithFormat:@"//%@", rootElement] error:&err]; 
if (err) { 
    NSLog(@"%@", err); 
} 
return xml; 
} 

из моего приложения, я получаю эту ошибку из отладчика

Assertion failure in -[CXMLElement description], /Users/macuser/Desktop/c/parser/TouchXML-master/Source/CXMLElement.m:287 

Я вызываю метод, используя этот

NSArray *xml = [XMLParse initWithXMLfromData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://a-cstudios.com/xml.xml"]] withRootElement:@"root"]; 
NSLog(@"%@", [xml objectAtIndex:0]); 

и XML выложена например

<?xml version="1.0" encoding="ISO-8859-1"?> 
<root> 
    <val>34</val> 
</root> 

ответ

1

Я играл с примером документации и с вашим XML, и вижу, что вы изменили XML. Следующий код работал для меня с xml, который вы отправили в вопрос:

NSMutableArray *res = [[NSMutableArray alloc] init]; 

CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://a-cstudios.com/xml.xml"]] options:0 error:nil] autorelease]; 
NSArray *nodes = NULL; 

// searching for val nodes 
nodes = [doc nodesForXPath:@"//val" error:nil]; 

for (CXMLElement *node in nodes) { 
    NSMutableDictionary *item = [[NSMutableDictionary alloc] init]; 
    int counter; 
    for(counter = 0; counter < [node childCount]; counter++) { 
     // common procedure: dictionary with keys/values from XML node 
     [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] name]]; 
    } 

    [res addObject:item]; 
    [item release]; 
} 

// print results 
NSLog(@"%@", res); 
[res release]; 
+0

Да, я изменил XML, чтобы увидеть, было ли это неправильно. Я проверю это сейчас. –

+0

Ницца. Это сработало отлично. Благодарю. –

+0

Добро пожаловать. –

Смежные вопросы