Как разобрать файл odx-f в cpp

Я хочу проанализировать файл odx-f с помощью C ++. Но я не могу найти ни одного примера, как разобрать его. Я новичок в этом сайте, не могли бы вы помочь мне решить эту проблему с примером кода? Заранее спасибо.

-5

Решение

odx-f файлы, содержащие данные флэш-контейнера. Для разбора файла .odx-f в C ++ вы можете использовать любой XML-парсер (т.е. rapidxml, Xerces, LibXML2 с C ++ Wrapper, …). В следующем примере будет использоваться rapidxml для печати SHORT-NAME из всех ECU-MEMS а также ECU-MEM-CONNECTORS, Чтобы получить доступ ко всем другим элементам ниже ECU-MEM тот же механизм может быть адаптирован (зависит от того, какие данные требуются вашему приложению из файла .odx-f).

#include <iostream>

#include "rapidxml/rapidxml.hpp"#include "rapidxml/rapidxml_utils.hpp"
int main(int argc, char *argv[]){
rapidxml::xml_document<> doc;
rapidxml::file<> xmlFile("myFile.odx-f");
doc.parse<0>(xmlFile.data());
rapidxml::xml_node<>* flashContainer = doc.first_node("ODX")->first_node("FLASH");
if(flashContainer){
std::cout << flashContainer->first_node("SHORT-NAME")->value() << std::endl; /* prints the shortname of the flash container */
for (rapidxml::xml_node<>* ecuMem = flashContainer->first_node("ECU-MEMS")->first_node("ECU-MEM"); ecuMem; ecuMem = ecuMem->next_sibling("ECU-MEM")) {
/* iterates over all ecu memory descriptors */
std::cout << ecuMem->first_node("SHORT-NAME")->value() << std::endl; /* prints the shortname of the ecu memory descriptor */
}
for (rapidxml::xml_node<>* ecuMemCon = flashContainer->first_node("ECU-MEM-CONNECTORS")->first_node("ECU-MEM-CONNECTOR"); ecuMemCon; ecuMemCon = ecuMemCon->next_sibling("ECU-MEM-CONNECTOR")) {
/* iterates over all ecu memory connectors */
std::cout << ecuMemCon->first_node("SHORT-NAME")->value() << std::endl; /* prints the shortname of the ecu memory connector */
}
}
return 0;
}

Есть также несколько библиотек, доступных для разбора odx; обычно они будут дорогими, поскольку они предназначены для коммерческого использования, но есть одна библиотека, лицензируемая в рамках LGPLv2, которая называется ODX-Lib. Однако он не обновляется с 2014 года и в Java (JNI требуется для доступа из C ++).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]