From 22d196978356e3f85859c7387d4ffeac08afebe9 Mon Sep 17 00:00:00 2001 From: Gregory John Casamento Date: Thu, 3 Apr 2014 04:58:59 +0000 Subject: [PATCH] Parse XML into tree for processing. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@37785 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/GSXibParser.m | 30 +++++++++++++++++++----------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 73ccc125f..746e420aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-04-03 00:55-EDT Gregory John Casamento + + * Source/GSXibParser.m: Add code to parse XML into a tree + so that it can be processed into instances. + 2013-04-02 Frank Le Grand * Source/NSToolbarItem.m: Fixed a bug where calling setImage: diff --git a/Source/GSXibParser.m b/Source/GSXibParser.m index 6e6248d41..65e30a012 100644 --- a/Source/GSXibParser.m +++ b/Source/GSXibParser.m @@ -84,20 +84,25 @@ didStartElement: (NSString*)elementName // FIXME: We should use proper memory management here AUTORELEASE(element); - - if (key != nil) + if ([@"document" isEqualToString: elementName]) { - [currentElement setElement: element forKey: key]; + currentElement = element; } else { - // For Arrays - [currentElement addElement: element]; + if (key != nil) + { + [currentElement setElement: element forKey: key]; + } + else + { + // For Arrays + [currentElement addElement: element]; + } + currentElement = element; } - - // Maintain the stack... - [stack addObject: currentElement]; - currentElement = element; + + [stack addObject: currentElement]; } - (void) parser: (NSXMLParser*)parser @@ -105,7 +110,10 @@ didStartElement: (NSString*)elementName namespaceURI: (NSString*)namespaceURI qualifiedName: (NSString*)qName { - currentElement = [stack lastObject]; - [stack removeLastObject]; + if (![@"document" isEqualToString: elementName]) + { + currentElement = [stack lastObject]; + [stack removeLastObject]; + } } @end