objective c - Importing 100MB XML file into iOS Core Data Model -
in app need import 100mb xml file core data model.
so far, i've imported 100kb xml file , works fine. however, not sure how long takes import 100mb xml. run tonite, in while.. think approach ?
thanks
nsmanagedobjectcontext * context = [self managedobjectcontext]; // delete documents nsfetchrequest * fetch = [[[nsfetchrequest alloc] init] autorelease]; [fetch setentity:[nsentitydescription entityforname:@"document" inmanagedobjectcontext:context]]; nsarray * result = [context executefetchrequest:fetch error:nil]; (id basket in result) [context deleteobject:basket]; //insert documents tbxml * tbxml = [[tbxml tbxmlwithxmlfile:@"categ_small.xml"] retain]; tbxmlelement * root = tbxml.rootxmlelement; tbxmlelement * doc = [tbxml childelementnamed:@"doc" parentelement:root]; { tbxmlelement * iddoc = [tbxml childelementnamed:@"id" parentelement:doc]; tbxmlelement * titledoc = [tbxml childelementnamed:@"title" parentelement:doc]; tbxmlelement * descriptiondoc = [tbxml childelementnamed:@"description" parentelement:doc]; tbxmlelement * time = [tbxml childelementnamed:@"time" parentelement:doc]; tbxmlelement * tags = [tbxml childelementnamed:@"tags" parentelement:doc]; tbxmlelement * geo = [tbxml childelementnamed:@"geo" parentelement:doc]; tbxmlelement * event = [tbxml childelementnamed:@"event" parentelement:doc]; tbxmlelement * user = [tbxml childelementnamed:@"user" parentelement:doc]; tbxmlelement * categ = [tbxml childelementnamed:@"categ" parentelement:doc]; nsmanagedobject *newdocument = [nsentitydescription insertnewobjectforentityforname:@"document" inmanagedobjectcontext:context]; [newdocument setvalue:[tbxml textforelement:iddoc] forkey:@"iddoc"]; [newdocument setvalue:[tbxml textforelement:titledoc] forkey:@"titledoc"]; [newdocument setvalue:[tbxml textforelement:descriptiondoc] forkey:@"descriptiondoc"]; [newdocument setvalue:[tbxml textforelement:time] forkey:@"time"]; [newdocument setvalue:[tbxml textforelement:tags] forkey:@"tags"]; [newdocument setvalue:[tbxml textforelement:geo] forkey:@"geo"]; [newdocument setvalue:[tbxml textforelement:event] forkey:@"event"]; [newdocument setvalue:[tbxml textforelement:user] forkey:@"user"]; [newdocument setvalue:[tbxml textforelement:categ] forkey:@"categ"]; } while ((doc = doc->nextsibling));
update one-time operation runs in simulator only, , won't deployed final application.
i'd following steps:
write converter xml->sqlite ruby or php, or if not friend of scripting languages have @ sqlite manager it's firefox plugin manage sqlite database , it's capable of importing xml.
prepopulate core-data shipping following tutorial: how preload/import existing data
Comments
Post a Comment