ok, well... I'm TRYING to use the CoreFoundation XML parser under OS X. right now I'm hitting a problem where it SIGBUS's when I call any inherited functions... code below. any hints, lemme know!
Code:
#import "xml.h"
@implementation xml
+(void)parseXML: (NSString *)path
{
NSLog(@"I am here!");
CFXMLTreeRef cfXMLTree;
CFDataRef xmlData;
CFURLRef pathURL = CFURLCreateFromFileSystemRepresentation (
kCFAllocatorDefault,
[path cString],
[path cStringLength],
NO);
// Load the XML data using its URL.
NSLog(@"about to load the XML file");
CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault,
pathURL, &xmlData, NULL, NULL, NULL);
// Parse the XML and get the CFXMLTree.
NSLog(@"loaded XML, about to parse it!");
cfXMLTree = CFXMLTreeCreateFromData(kCFAllocatorDefault,
xmlData,
pathURL,
kCFXMLParserSkipWhitespace,
kCFXMLNodeCurrentVersion);
NSLog(@"finished parsing");
//int childCount = CFTreeGetChildCount(cfXMLTree); THIS CRASHES IT.
NSLog(@"childcount");
int index;
CFXMLTreeRef xmlTreeNode;
CFXMLNodeRef xmlNode;
NSLog(@"about to for-loop");
for (index = 0; index < 2; index++)
{
NSLog(@"just about to call CFTree");
xmlTreeNode = CFTreeGetChildAtIndex(cfXMLTree, index); //SO DOES THIS.
NSLog(@"called CFTree, calling CFXML");
xmlNode = CFXMLTreeGetNode(xmlTreeNode);
CFShow(CFXMLNodeGetString(xmlNode));
//NSLog("%s\n",CFXMLNodeGetString(xmlNode));
}
}
@end
current output: 2003-10-14 17:28:24.790 experiment[13414] I am here!
2003-10-14 17:28:24.799 experiment[13414] about to load the XML file
2003-10-14 17:28:24.807 experiment[13414] loaded XML, about to parse it!
2003-10-14 17:28:24.816 experiment[13414] finished parsing
2003-10-14 17:28:24.824 experiment[13414] childcount
2003-10-14 17:28:24.832 experiment[13414] about to for-loop
2003-10-14 17:28:24.840 experiment[13414] just about to call CFTree
experiment has exited due to signal 10 (SIGBUS).
note that it dies when it calls the CFTree function with a CFXMLTree object (XMLTree is a subclass of Tree, btw). I'm baffled...