Импорт ориентиров
Метаданные
Класс CPosLandmarkParser предназначен для разбора содержимого ориентиров. Эта функциональность может использоваться при выполнении импорта ориентиров из файлов. Для создания инстанции данного класса необходимо указать тип MIME разбираемого содержимого. Ориентиры могут храниться в виде XML-файлов для разбора которых можно использовать следующий MIME-тип: "application/vnd.nokia.landmarkcollection+xml".
Приведенный фрагмент кода демонстрирует, как импортировать ориентиры из XML-файла в заданную локальную базу данных.
Необходимо включить следующие заголовочные файлы:
- epos_cposlmdatabasemanager.h
- epos_hposlmdatabaseinfo.h
- epos_cposlandmarkparser.h
Для связывания использовать следующие библиотеки:
- eposlandmarks.lib
- eposlmdbmanlib.lib
// URI базы данных
_LIT( KNewDbUri, "file://C:new.ldb" );
TBuf<32> newDbUri( KNewDbUri );
// файл с ориентирами
_LIT( KSrcFile, "C:\\LmBackup\\my_lms.xml" );
// менеджер для управления базами данных
CPosLmDatabaseManager* dbManager = CPosLmDatabaseManager :: NewL();
CleanupStack :: PushL( dbManager );
// создание базы данных если ее еще нет
if( !dbManager->DatabaseExistsL( newDbUri ) )
{
HPosLmDatabaseInfo* dbInfo = HPosLmDatabaseInfo :: NewLC( newDbUri );
dbManager->CreateDatabaseL( *dbInfo );
CleanupStack :: PopAndDestroy( dbInfo );
}
// открытие базы данных с последующей инициализацией, если необходимо
CPosLandmarkDatabase* db = CPosLandmarkDatabase :: OpenL( newDbUri );
CleanupStack :: PushL( db );
if( db->IsInitializingNeeded() )
ExecuteAndDeleteLD( db->InitializeL() );
// очистка базы в пакетном режиме
ExecuteAndDeleteLD( db->RemoveAllLandmarksL() );
// тип MIME для импорта и экспорта
_LIT8( KPosMimeTypeLandmarkCollectionXml, "application/vnd.nokia.landmarkcollection+xml" );
// создание парсера
CPosLandmarkParser* parser = CPosLandmarkParser :: NewL( KPosMimeTypeLandmarkCollectionXml );
CleanupStack :: PushL( parser );
// импортирование данных в пакетном режиме
parser->SetInputFileL( KSrcFile );
ExecuteAndDeleteLD( db->ImportLandmarksL( *parser, CPosLandmarkDatabase::EDefaultOptions ) );
CleanupStack :: PopAndDestroy( 3 ); // parser db dbManager


(no comments yet)