Skip to content

Instantly share code, notes, and snippets.

@abhiyerra
Created July 25, 2009 01:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abhiyerra/154649 to your computer and use it in GitHub Desktop.
Save abhiyerra/154649 to your computer and use it in GitHub Desktop.
/*
* <events>
* <event>
* <name>My name</name>
* </event>
* </events>
*/
#import <libxml/xmlmemory.h>
#import <libxml/parser.h>
#import <libxml/tree.h>
#define URL @"http://path.to.url/stuff"
- (NSArray *)events {
NSMutableArray *events = [NSMutableArray array];
NSURL *url = [[NSURL alloc] initWithString:URL];
NSData *xmlData = [NSData dataWithContentsOfURL:url];
NSString *xml = [[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];
xmlDocPtr doc = xmlParseMemory([xml UTF8String], [xml lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
xmlNodePtr node = xmlDocGetRootElement(doc);
xmlNodePtr cur_node = node->children;
for(cur_node = node->children; cur_node; cur_node = cur_node->next) {
if(strcmp((char *)cur_node->name, "event") == 0) {
xmlNodePtr event_cur_node;
for(event_cur_node = cur_node->children; event_cur_node; event_cur_node = event_cur_node->next) {
if(strcmp("event", event_cur_node->name)) {
xmlChar *event_element_value = xmlNodeListGetString(doc, event_cur_node->children, 1);
NSLog(@"Event %s %s", event_cur_node->name, event_element_value);
if(!strcmp(event_cur_node->name, "name")) {
// Convert to NSString
NSLog([[NSString alloc] initWithUTF8String:event_element_value]]);
}
}
}
[events addObject:event];
[event release];
} else {
NSLog(@"Else %s", cur_node->name);
}
}
xmlFreeDoc(doc);
xmlCleanupParser();
return events;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment