Недавно я тоже изучил этот вопрос, и лучшим вариантом, который я нашел, был gSOAP, он очень зрелый и хорошо протестирован. Однако я решил пойти по не-SOAP маршруту, что было вариантом, так как я на стороне клиента и сервера. Перед использованием gSOAP убедитесь, что вы можете жить с их лицензией, возможно, вам придется выпустить ваш код или оплатить его, в зависимости от того, как вы его используете.
Другой вариант - Apache Axis2 / C , хотя у меня нет опыта работы с ним (я бы предположил, что он имеет такой же размер, что и gSOAP). Их клиентский API здесь . Обучающее руководство по клиентскому API: здесь .
Если вы решите пойти по пути разбора XML, вас может заинтересовать этот ТАК вопрос (см. Ответы).
Вы можете также проверить boost :: spirit для проанализированного маршрута. У него есть возможность создавать небольшие, быстрые, специализированные (и общие) парсеры, если вы знакомы с C ++ (они могут быть написаны так, чтобы быть реентерабельными, поэтому вызов их через статический объект с внешним интерфейсом "C" кошерный ). Я могу ручаться за это в общем смысле (не специфично для XML). Крутая кривая обучения, но большая отдача.