XML ниже представляет сообщение FIX. Это сообщение имеет переменное количество полей (пронумерованных с использованием тега id), каждое из которых содержит различные атрибуты. Поэтому я хотел бы проанализировать этот XML и с моими дополнительными возможностями кодирования вывести объект сообщения C ++, который включает всю информацию об атрибутах для каждого поля.
Первый вопрос: есть ли библиотека повышения, которую я могу использовать для этого? Мой второй вопрос — каков интерфейс между тем, что может обеспечить синтаксический анализатор XML, и где мне нужно написать код для создания объектов. Так, например, в XML в строке 8 есть <delta/>
тег и это атрибут объекта. Таким образом, для поля 52 (строка 8) атрибутом будет объект подтипа Delta, а для строки 9 атрибутом будет объект подтипа Copy. Я хотел бы хранить эти подтипы в std::unordered_map
с идентификатором поля, являющегося ключом.
Я предполагаю другой способ сформулировать это: какой «конечный результат» даст мне синтаксический анализатор XML, чтобы помочь построить объекты так, как я хочу?
Вы, вероятно, должны использовать один из многих широко используемых парсеров xml, Xerces и TinyXML — две возможности. Есть еще. Google твой друг.
Вы хотите работать в режиме SAX, а не в режиме DOM (будет объяснена документация для выбранного вами парсера). Это означает, что парсер будет вызывать код, который вы предоставляете для каждого элемента, и атрибутировать его, а не строить произвольную структуру в памяти, которая не соответствует вашим специфическим для вашего домена потребностям.
Других решений пока нет …