2010-09-22 2 views
1

У меня есть программа c, которая получает свои настройки из файла XML. В настоящее время я использую Xerces для перемещения данных, но становится довольно утомительным сопоставление каждого значения XML с переменной.XML -> генератор парсера C

Тот же XML также читается программой Java, что намного удобнее из-за того, что JAXB создает все необходимые классы и т. Д. На Java. Я ищу что-то подобное, которое может создать «структуру структур» или некоторые такие. Очень важно, чтобы я получал c-структуры, а не C++-классы, потому что этот код будет работать на графических процессорах.

Я нашел «XML Booster», и сейчас я читаю его docs. Вы знаете другие варианты? Требуется использовать в Linux.

ответ

1

Я использую библиотеку libxml. Вам все равно придется пересекать XML, но вы получаете связанный список с элементами, атрибутами, узлами и дочерними узлами, за которыми вы можете следовать.

ссылка: http://xmlsoft.org/index.html

+0

Спасибо, но есть ли большая разница между libxml и xerces? Я уже получаю список узлов и что я за цикл. Я мог бы просто пропустить что-то основное о том, как работает libxml, но я взглянул на него и пришел к выводу, что это не улучшит ситуацию. – Claes

+0

Я не знаю Xerces. Я был «Ответом» на вашу «карту каждого XML-значения на переменную». –

+0

Я ценю, что вы ответили на мой вопрос, но «сопоставить каждое значение XML с переменной» - это проблема, с которой я пытаюсь убежать, а не воссоздавать :) – Claes

0

Если у вас есть XML-схемы, проверить XSD codesynthesis. Это создает хорошие C++ объектов для XSD и вам не нужно иметь дело с Xerces напрямую: http://www.codesynthesis.com/products/xsd/

+0

Это отличный вариант, но я должен был проявить себя более четко в вопросе. Классы не являются опцией, так как основная часть приложения работает на графических процессорах. Мне нужен чистый C-код. Я обновил свой вопрос, чтобы отразить это лучше. – Claes

+1

Вот почему вам нужно рассмотреть Bison + Flex. – Viet

1

Учитывая ваши файлы XML имеют общий шаблон, вы можете использовать Bison + Flex или просто ANTLR (C во время выполнения), чтобы построить грамматику и извлекать значения из файлов XML в переменные. Те будут производить парсеры в чистом C, поэтому вам не о чем беспокоиться.

Смежные вопросы