Конвертировать файлы конфигурации в XML

У нас есть большое количество устаревших файлов конфигурации, различных форматов, обычно что-то вроде KEYWORD DATA KEYWORD DATA KEYWORD DATA.

Формат самих данных уникален в каждом файле конфигурации.

Что мы хотели бы сделать, так это определить форматы данных файла, а затем использовать это, чтобы позволить приложению проверять файлы конфигурации на соответствие определенным форматам файлов.

Мы думали о том, чтобы определить их как BNF и использовать YACC или его эквивалент, но неприятное ощущение заключается в том, что с этим нужно уйти, используя XML.

Требовался способ определения формата данных файлов конфигурации, предпочтительного в формате XML, а затем использование этого файла для преобразования устаревшего файла в действительный XML. Предпочтителен способ преобразования XML-файла обратно в устаревший формат файла.

4 ответа

Для преобразованного XML-> унаследованного файла XSLT, вероятно, будет работать нормально.

Это именно та проблема, для которой был разработан желатин. (Также предупреждение о саморекламе.)

Посмотрите на Altova-Tools, особенно Mapforce. AFAIR они могут конвертировать из / в пользовательский формат файла, и отображение может быть сделано вполне естественно на экране. (Altova Tools также может генерировать XSD для проверки.)

Попробуйте использовать простой текстовый процессор, такой как awk (или gawk), для генерации XML. Шаблон будет выглядеть следующим образом.

BEGIN { 
    print "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    print "<config-type>"; 
}
 { print "    <" $1 ">" $2 "</" $1 ">"; }
END { print "</config-type>"; }

Убедитесь, что кодировка правильная. Для файлов конфигурации на английском достаточно "ASCII".

После этого вы можете использовать самые разные инструменты для обработки этого XML. Я предлагаю использовать этот формат, потому что его проще всего создавать и обрабатывать:

<config-type>
    <KEYWORD1>DATA1</KEYWORD1>
    <KEYWORD2>DATA2</KEYWORD2>
    <KEYWORD3>DATA3</KEYWORD3>
</config-type>

Используйте разные имена для "config-type" для каждого типа конфигурационного файла, чтобы их было легко отличить.

Чтобы проверить формат XML, самый простой способ - определить DTD для него. Многие редакторы XML могут читать существующий файл XML и создавать для него DTD. Это DTD не будет идеальным, но это будет очень хорошая отправная точка.

Затем вы можете указать имя DTD в заголовке XML и указать анализатору XML проверить структуру (но не данные).

Для проверки данных вы можете использовать XML-схему, но XML-схема очень сложна и часто является излишним.

Другие вопросы по тегам