Как проанализировать динамический XML в цели C? - PullRequest
1 голос
/ 21 июня 2011

любое тело знает, как анализировать динамический XML.У меня есть XML с некоторыми тегами.вот тег videos вроде:

<Videos>
   <video>"Video link"</Video>
</Videos>

теперь в этом XML теги в <Videos> могут быть изменены, они могут быть <video> или <image> или <clip> или любой другой вещью.Так можно ли разобрать этот XML?как я могу определить этот тег, как называется этот тег или что находится в этом теге?

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Я использую touch xml для решения этой проблемы

Я использую в

NSError * theError = nil;

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


NSString *XMLPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sample.xml"];

NSData *XMLData   = [NSData dataWithContentsOfFile:XMLPath];

CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease];



NSArray *nodes = NULL;



nodes = [doc nodesForXPath:@"//sample" 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

        NSString * a=[NSString stringWithFormat:@"%@%d",[[node childAtIndex:counter] name],counter+1];

        [item setObject:[[node childAtIndex:counter] stringValue] forKey:a];

    }


    //NSLog(@"%)
    //  and here it is - attributeForName! Simple as that.

    [item setObject:[[node attributeForName:@"id"] stringValue] forKey:@"id"];  // <------ this magical arrow is pointing to the area of interest



    [res addObject:item];

    [item release];

}



//  and we print our results

NSLog(@"%@", res);

[res release];
2 голосов
/ 21 июня 2011

Используйте TBXML и ознакомьтесь с их руководством по просмотру XML-документа с неизвестными элементами ...

Руководство TBXML здесь ...

...