Skip to content

simple library for read, edit and write xml files, based on C++ Standart Templates Library

License

Notifications You must be signed in to change notification settings

ilyalesnoi/myxml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

myxml

simple library for read, edit and write xml files, based on C++ Standart Templates Library

Захотел у себя на сервере ф-л для работы с xml. Языки иные кроме как С++ лично для себя не приемлю. Дополнительные либы в сервер вносить не хочу в виду его узкого дискового пространства. Так и родилась идея написать свою либу."Велосипеды это плохо" - пусть идёт лесом это плохо в коммерческом программировании и то не всегда (пример если для разработки игр не устраивает базис за вроде STL - то ElectonicArts взяла и конкретно для себя сделала свою EaStL - велосипед?). В развлекательных целях - почему бы нет, тут велосипеды, которые возможно даже 1 в 1 повторят путь уже готового решения, валидны и непорицаемы.

На сервере есть нативный Clang, есть STL. Соответственно буду стремиться делать максимально высокоуровнево. Требования к производительности у меня нет, есть требование к простоте кода.

В общем проект просто ради развлекухи. Если бы мне нужно было xml парсер прямо здесь и сейчас прежде всего я бы обратился к Qt, пожертвуя немного дисковым пространством на сопутствующий файл библиотеки из Qt.

Если не прямо здесь и сейчас но в ближайшее время - то TinyXml2

Мой же путь до финального релиза который не стыдно порекомендовать кому-то в пользование займет не один месяц, особенно учитывая что в недлю заниматься этим могу не каждый день а если и могу то по немногу часов. Да, задача выглядит примитивной с первого взгляда, но не смотря на простоту задачи, если посмотреть на код (прежде всего его кол-во) Qt по работе с XML или TinyXML2 (там еще и кол-во контрибьюторов видно) становится очевидно что проект будет долгим.

Тем не менее на выходе получится не менее удобная в пользовании библиотека чем обозначенные выше готовые решения. Есть вероятность что она возможно будет покрывать не всё множество xml вариаций. Но основные (достаточные чтобы работать с примерами xml из википедии например) покрывать будет.

Разработку начал неподсматривая в другие проекты. Правда потом всё же подсмотрел, когда решал вопросы об интерфейсах. Кстати говоря TinyXML очень зрелый продукт, судя по коду должен быть весьма эффективным по времени выполнения. Есть свой аллокатор. И огромным его плюсом является то что в нём отступили от рекомендуемой практики разделения кода по файлам (что очень удобно в разработке - разработчику) и в итоге вся тини - в двух файлах .h,.cpp что крайне удобно пользователю этой либы. Т.е. никаких ключей и настроек для проекта не нужно - просто положил в дерево проекта два файла и сделал #include. Крайне удобно. Моя либа предполагает то же самое (предполагала собственно еще до того как я знал о tinyxml)

Я реалист и понимаю вероятность того что даже будучи гениальным разработчиком (кем я не являюсь согласно своего же видения гениальности) тяжело(читай не реально) своими собственными силами сделать продукт который будет лучше длительное время развивавшегося продукта, который создавался коллективным разумом десятков разработчиков. Причем вероятно "средняя талантливость" (интеллект, опыт) этого коллективного разума выше моего на n порядков.

Тем не менее по завершению проекта (если он действительно завершится) лично мне будет интересно на сколько конкурентноспособной на одном и том же множестве задач окажется моя либа. Прежде всего по производительности и эффективности (скорость парсинга и генерации нового xml, потребление памяти). Ну и по внутреннему кодоустройству (независимость блоков друг от друга, разбиение на модули, простота модификации кода).

Так же по завершению проекта произведу анализ на тему TinyXML vs Qt - предварительно (по очень поверхностному взгляду на реализацию обоих) Qt заметно богаче по ф-лу, а следовательно удобнее в использовании, Tiny же вероятно пошустрее.

About

simple library for read, edit and write xml files, based on C++ Standart Templates Library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published