Конвертировать файлы конфигурации в XML - PullRequest
2 голосов
/ 09 февраля 2009

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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 09 февраля 2009

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

1 голос
/ 20 января 2010

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

0 голосов
/ 09 февраля 2009

Попробуйте использовать простой текстовый процессор, такой как 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-схема очень сложна и часто является чрезмерным.

0 голосов
/ 09 февраля 2009

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

...