Название: Изменился фориат (как поступить) Отправлено: Igors от Август 04, 2011, 13:49 Добрый день
Несколько лет пользователь спокойно жил с XML (формат исходного файла). Но вот что-то у него зачесалось (уж не знаю в каком месте), и он изобрел новый (свой) формат входного файла. В принципе формат вполне разумный (простой текстовик, то же дерево), обсуждать "зачем" смысла нет. Разборка XNL у меня на wxWidget. Разобрать новый формат - проблем нет, но дело в том что разборка XML у меня тесно переплетена с ф-циональностью - получаю значения тега - сразу пошли "вытекающие". И что делать? Скопировать старый XML парсер и подставить новые вызовы? Или пытаться обобщить через template? Или др. ходы? Ваше мнение? Спасибо Название: Re: Изменился фориат (как поступить) Отправлено: lit-uriy от Август 06, 2011, 21:39 наследование - повторное использование кода.
??? Название: Re: Изменился фориат (как поступить) Отправлено: asvil от Август 06, 2011, 22:18 Таки у вас парсер собственный или готовый dom/sax. Если готовый, то сделать свой парсер для нового древовидного формата с таким же интерфейсом как и xml dom либо sax. Ну и в программе просто заменить строку создания парсера.
Название: Re: Изменился фориат (как поступить) Отправлено: Igors от Август 07, 2011, 09:33 Разборка XML выглядит так (без контроля ошибок)
Код С наследованием мрачно поскольку GetName, GetPropVal никакие не виртуал. Template вроде можно но придется заряжать <class T1, class T2, class T3 ..> и, возможно, понять будет сложновато. Также я обязан полностью повторить логику которая мне не всегда нравится (напр хотелось бы пройтись по контейнеру чилдренов вместо while/GetNext). А главное - если новый формат хоть чуть-чуть изменится (и его дерево уже не будет соответствовать дереву XML) - у меня будут большие проблемы с моей "общей" конструкцией. Поэтому просто скопировал и заменил вызовы парсера. Тоже не блеск (так я имею 2 однотипных куска) |