You can use class CPosLandmarkParser for parsing the landmark content, this functionality can be used for importing data from files. The type (e.g. the mime type) must be specified for creating instance of this class. You can use mime type "application/vnd.nokia.landmarkcollection+xml".
The following code snippet demonstrates how to import data from the XML-file to the specified local landmark database. It is necessary to include the following headers:
#include <epos_cposlmdatabasemanager.h> #include <epos_hposlmdatabaseinfo.h> #include <epos_cposlandmarkparser.h>
And link against:
LIBRARY eposlandmarks.lib LIBRARY eposlmdbmanlib.lib
// db URI _LIT( KNewDbUri, "file://C:new.ldb" ); TBuf<32> newDbUri( KNewDbUri ); // file with landmarks _LIT( KSrcFile, "C:\\LmBackup\\my_lms.xml" ); // db manager CPosLmDatabaseManager* dbManager = CPosLmDatabaseManager :: NewL(); CleanupStack :: PushL( dbManager ); // create database, if necessary if( !dbManager->DatabaseExistsL( newDbUri ) ) { HPosLmDatabaseInfo* dbInfo = HPosLmDatabaseInfo :: NewLC( newDbUri ); dbManager->CreateDatabaseL( *dbInfo ); CleanupStack :: PopAndDestroy( dbInfo ); } // open DB and init it, if necessary CPosLandmarkDatabase* db = CPosLandmarkDatabase :: OpenL( newDbUri ); CleanupStack :: PushL( db ); if( db->IsInitializingNeeded() ) ExecuteAndDeleteLD( db->InitializeL() ); // clear the database (batch mode) ExecuteAndDeleteLD( db->RemoveAllLandmarksL() ); // MIME type for import & export _LIT8( KPosMimeTypeLandmarkCollectionXml, "application/vnd.nokia.landmarkcollection+xml" ); // Create the parser to be used for importing landmarks CPosLandmarkParser* parser = CPosLandmarkParser :: NewL( KPosMimeTypeLandmarkCollectionXml ); CleanupStack :: PushL( parser ); // import data (batch mode) parser->SetInputFileL( KSrcFile ); ExecuteAndDeleteLD( db->ImportLandmarksL( *parser, CPosLandmarkDatabase::EDefaultOptions ) ); CleanupStack :: PopAndDestroy( 3 ); // parser db dbManager