Puoi provare con expat, eventualmente usando uno dei wrapper C++ citati nella pagina che ti ho linkato per usarla con un approccio più object-oriented.