Forums
New posts
Articles
Product Reviews
Policies
FAQ
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Menu
Log in
Register
Install the app
Install
Forums
macOS & iOS Developer Playground
iOS Development
NSXML help required
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="sagarshivam" data-source="post: 1287475" data-attributes="member: 203583"><p>Thanks for encouraging me to proceed.</p><p>I tried writing code for parsing the xml file, a part of which is like:</p><p></p><p>[CODE]</p><p><Project> </p><p> <subproject> </p><p> <subprojectname>SUBPPROJECT1 </subprojectname></p><p> <docid> </p><p> <name>ColorContourCanvas1.java</name> </p><p> </docid> </p><p> <docid> </p><p> <name>ColorContourCanvas11.java</name> </p><p> </docid> </p><p> </subproject></p><p> <subproject> </p><p> <subprojectname>SUBPPROJECT2 </subprojectname></p><p> <docid> </p><p> <name>ColorContourCanvas2.java</name> </p><p> </docid> </p><p> <docid> </p><p> <name>ColorContourCanvas22.java</name> </p><p> </docid> </p><p> </subproject></p><p></Project></p><p>[/CODE]</p><p></p><p>I want to create hash map where each subprojectname will correspond to list of files attached to it.For ex: SUBPROJECT1 is linked to ColorContourCanvas1.java and ColorContourCanvas11.java</p><p></p><p></p><p>I am able to ge the list of subprojectname and docid name but it includes all subprojectname and docid. The code I wrote is:</p><p></p><p>[CODE]</p><p>- (void)parseXMLFile {</p><p> NSString* path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"];</p><p> NSData *data = [NSData dataWithContentsOfFile:path];</p><p> parser = [[NSXMLParser alloc] initWithData:data];</p><p> [parser setDelegate:self];</p><p> [parser parse]; </p><p> [parser release];</p><p>}</p><p>[/CODE]</p><p></p><p>and delegates as:</p><p></p><p>[CODE]</p><p>- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ </p><p> currentElement = [elementName copy];</p><p> if ([elementName isEqualToString:@"subproject"]) {</p><p> entry = [[NSMutableDictionary alloc] init];</p><p> currentTitle = [[NSMutableString alloc] init];</p><p> currentContent = [[NSMutableString alloc] init];</p><p> }</p><p> </p><p>}</p><p></p><p>- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ </p><p> if ([elementName isEqualToString:@"subproject"]) {</p><p> [entry setObject:currentTitle forKey:@"subproject_name"];</p><p> [entry setObject:currentContent forKey:@"file_name"];</p><p> for ( currentTitle in [entry allKeys]){</p><p> id as = [entry objectForKey:currentTitle];</p><p> NSLog(@" %@", as);</p><p> [stories insertObject:as atIndex:i++];</p><p> </p><p> }</p><p> }</p><p>}</p><p></p><p>- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{</p><p> </p><p> if ([currentElement isEqualToString:@"subprojectname"]) {</p><p> [currentTitle appendString:string];</p><p> } </p><p> if ([currentElement isEqualToString:@"name"]) { </p><p> [currentContent appendString:string];</p><p></p><p> }</p><p> </p><p>}</p><p></p><p>[/CODE]</p><p></p><p></p><p>But as of now I am getting a list as:</p><p></p><p>SUBPPROJECT1</p><p>ColorContourCanvas1.java ColorContourCanvas11.java </p><p>SUBPPROJECT2</p><p>ColorContourCanvas2.java</p><p>ColorContourCanvas22.java</p><p></p><p>I am not able to understand how to implement my requirement. Kindly help</p></blockquote><p></p>
[QUOTE="sagarshivam, post: 1287475, member: 203583"] Thanks for encouraging me to proceed. I tried writing code for parsing the xml file, a part of which is like: [CODE] <Project> <subproject> <subprojectname>SUBPPROJECT1 </subprojectname> <docid> <name>ColorContourCanvas1.java</name> </docid> <docid> <name>ColorContourCanvas11.java</name> </docid> </subproject> <subproject> <subprojectname>SUBPPROJECT2 </subprojectname> <docid> <name>ColorContourCanvas2.java</name> </docid> <docid> <name>ColorContourCanvas22.java</name> </docid> </subproject> </Project> [/CODE] I want to create hash map where each subprojectname will correspond to list of files attached to it.For ex: SUBPROJECT1 is linked to ColorContourCanvas1.java and ColorContourCanvas11.java I am able to ge the list of subprojectname and docid name but it includes all subprojectname and docid. The code I wrote is: [CODE] - (void)parseXMLFile { NSString* path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"]; NSData *data = [NSData dataWithContentsOfFile:path]; parser = [[NSXMLParser alloc] initWithData:data]; [parser setDelegate:self]; [parser parse]; [parser release]; } [/CODE] and delegates as: [CODE] - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ currentElement = [elementName copy]; if ([elementName isEqualToString:@"subproject"]) { entry = [[NSMutableDictionary alloc] init]; currentTitle = [[NSMutableString alloc] init]; currentContent = [[NSMutableString alloc] init]; } } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"subproject"]) { [entry setObject:currentTitle forKey:@"subproject_name"]; [entry setObject:currentContent forKey:@"file_name"]; for ( currentTitle in [entry allKeys]){ id as = [entry objectForKey:currentTitle]; NSLog(@" %@", as); [stories insertObject:as atIndex:i++]; } } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ if ([currentElement isEqualToString:@"subprojectname"]) { [currentTitle appendString:string]; } if ([currentElement isEqualToString:@"name"]) { [currentContent appendString:string]; } } [/CODE] But as of now I am getting a list as: SUBPPROJECT1 ColorContourCanvas1.java ColorContourCanvas11.java SUBPPROJECT2 ColorContourCanvas2.java ColorContourCanvas22.java I am not able to understand how to implement my requirement. Kindly help [/QUOTE]
Verification
Post reply
Forums
macOS & iOS Developer Playground
iOS Development
NSXML help required
Top