Это старая проблема. Я был руководителем группы разработчиков с наиболее критическими зависимостями пути от самого крупного программного проекта в мире в 1999 и 2000 годах, и именно эта проблема была в центре моей работы в то время. Я убежден, что колесо было изобретено несколькими инженерами, которые не знали, что другие уже изобрели его. То же самое относится и к привязке XML-данных в C ++. Я тоже изобрел это и совершенствовал его более 10 лет в различных проектах. У меня есть решение, которое решает проблемы, отмеченные здесь, и некоторые дополнительные проблемы, которые постоянно возникают:
Обновления XML. Это возможность повторно применить подмножество XML в существующую объектную модель. Во многих случаях XML привязан к индексированным объектам, и мы не можем позволить себе переиндексировать каждое обновление.
Управление интерфейсами COM и CORBA. В том же отношении, что привязка данных XML может быть автоматизирована с помощью объектно-ориентированных практик, как и экземпляры объектов интерфейса, которые предоставляют эти данные на прикладном уровне.
Отслеживание состояния. Прикладная программа часто должна различать пустое значение и отсутствующее значение - оба создают пустую строку. Это обеспечивает проверку вместе с привязкой данных.
Исходный код использует наименее ограничительную лицензию - менее, чем GPL. Проект поддерживается и управляется отсюда:
http://www.codeproject.com/KB/XML/XMLFoundation.aspx
Теперь, когда наступил 2010 год, я верю, что никто больше не будет пытаться изобретать велосипед, потому что есть из чего выбирать. ИМХО - это колесо является наиболее отшлифованным и хорошо округленным вариантом из доступных.
Наслаждайтесь.