Кое-кто слышал о библиотеке RapidXML — это single-header C++ XML парсер. Очень быстрый, довольно удобный, с некоторыми ограничениями на входной XML.
Мне не хватало в нем поддержки XML Namespaces и я её добавил.
RapidXML NS на GitHub.
Затраты памяти выросли незначительно. Затраты времени зависят от конкретного XML, но, думаю, тоже терпимо.
Замеры на файле не содержащем объявлений пространств имен:
rapidxml:
3.5 cycles/char mode=fastest
4.1 cycles/char mode=default
rapidxml_ns:
3.5 cycles/char mode=fastest
4.8 cycles/char mode=default
Первый результат — оригинальный RapidXML, третий — RapidXML NS в режиме без XML namespaces, т. е. они и должны совпадать.
17% базовый прирост времени. Любой другой парсер с поддержкой XML Namespaces, думаю, будет иметь совсем другой порядок использования CPU.
Ах да, лицензия свободная — Boost или MIT.