Справочная информация : Итак, я создал приложение VC ++, MFC, которое в основном представляет собой большой диалог настроек, в котором пользователь может настроить несколько страниц, каждая из которых имеет несколько различных настроек. Затем эти страницы экспортируются в файлы XML для настройки другого приложения. Так что, в основном, это графический интерфейс XML Writer.
Поскольку настроек так много, мне действительно нужно иметь возможность импортировать настройки в приложение, чтобы пользователю не приходилось повторно вводить каждое значение каждый раз, когда он / она хочет внести изменения. Я хотел бы иметь возможность поддерживать импорт файлов XML (например, те, которые он генерирует).
Я знаю о синтаксических анализаторах XML и о том, как анализировать файл на предмет значений, но я не уверен, как решить мою текущую проблему, потому что существуют сотни и сотни переменных. С течением времени, не будет ли медленным искать в XML-документах каждую переменную, чтобы найти соответствующее значение для вызова UpdateData (FALSE)? Есть ли более простое / лучшее / быстрое решение?
РЕДАКТИРОВАТЬ: Кроме того, я не хочу зависеть от того, чтобы каждый раз XML-теги были в одном и том же порядке. Технически они были бы с тех пор, как я генерировал их, но я не хочу этого предполагать.
РЕДАКТИРОВАТЬ 2: Большая часть документа выглядит следующим образом ... есть некоторые подразделения, но я не думаю, что этого достаточно.
<MAIN_APP>
<!-- General Configuration -->
<BARCO_ENABLED>1</BARCO_ENABLED>
<CHANNEL_COUNT value = "1" />
<!-- Elevation Data Format: 0 = DTED; 1 = RDTED-->
<ELEVATION_DATA_FORMAT value = "0" />
<BLOCKS_PER_FRAME value = "4" />
<PROCESS_FACTOR value = "0" />
<!-- Message Processing: 0=Default, 1:Immediate -->
<IMMEDIATE_MESSAGE_MODE value = "0" />
<!--Threat Diameter Size In Texels: 0 = 256(default); 1 = 512; 2 = 1024; 3 = 2048 -->
<THREAT_DIAMETER_TEXEL_COUNT value = "2" />
<!-- Texture Size: 0 = 256X256 (default); 1 = 512X512; 2 = 1024X1024; 3 = 2048X2048 -->
<DATAFRAME_TEXTURE_SIZE value = "2" />
<GEOCHIP_TEXTURE_SIZE value = "0" />
<OWNSHIP_VISIBILITY_TEXTURE_SIZE value = "2" />
<!-- If the vehicle sensor texture is not used, it can be set to -1 to avoid allocation -->
<VEHICLE_SENSOR_TEXTURE_SIZE value = "-1" />
<!-- Map Timeout: -999 = No Timeout; > 0 = Time out in milliseconds -->
<MAP_TIMEOUT value = "-999" />
<!-- Image to use for the Map Standby screen -->
<MAP_STANDBY_IMAGE value = "/BMP/MAP_STANDBY.bmp" />
<!-- Maximum Frame Buffer Dimensions (pixels) -->
<VIEWPORT_WIDTH value = "1024" />
[ ... ]
</MAIN_APP>
Вот пример разделенной секции.
<ROUTE_REPLAN_SIZE value = "25" />
<ROUTE_MAX_REPLAN_WAYPOINTS value = "5" />
<SYMBOL_RENDER_PRIORITY>
<TACTICAL value = "5" />
<USER value = "4" />
<DRAWINGFILE value = "2" />
<DVOF value = "0" />
<LOCAL_POINT value = "3" />
<MCHUM value = "1" />
<THREAT_RING value = "6" />
<THREAT_SYMBOL value = "7" />
<ARINC_424 value = "8" />
<DAFIF value = "9" />
<AIRSPACE value = "10" />
</SYMBOL_RENDER_PRIORITY>
<!-- GeoSymbol Library Configuratoin -->
<GEOSYMBOL_LIBRARY_CONFIG>
<!-- Predefined Symbol memory value is in KB -->
<PREDEFINED_SYMBOL_MEMORY value = "35000" />
<DYNAMIC_TACTICAL_COUNT value = "100" />
<DYNAMIC_USER_GEOSYMBOL_COUNT value = "32" />
<USER_GEOSYMBOL_SKIN_COUNT value = "32" />
<!-- DVOF Label Selection. Valid Input: 0 = NONE, 1 = AGL, 2 = MSL, 3 = BOTH -->
<VO_LABEL_DISPLAY value = "1" />
</GEOSYMBOL_LIBRARY_CONFIG>