Не зная подробностей, моей непосредственной мыслью было бы, вероятно, использовать xslt для этого. например если у вас было что-то вроде (я ценю
<element name="SomeEntity">
<attribute name="someAttr" type="integer" />
<complexType>
<sequence>
<element name="someOtherAttr" type="string" />
</sequence>
</complexType>
</entity>
Создайте набор шаблонов для перевода, например,
<xsl:template match="element">
<xsl:apply-template select="." mode="header"/>
<xsl:apply-template select="." mode="impl"/>
</xsl:template>
<xsl:template match="element" mode="header">
class <xsl:value-of select="@name"/> {
public:
<xsl:apply-template select="attribute" mode="header"/>
<xsl:apply-template select="complexType/element" mode="header"/>
</xsl:template>
...
Хотя если бы логика генерации была более сложной, я бы, вероятно, пошел бы по пути импорта xml в объектную модель и программно обработал бы это, возможно, используя механизм шаблонов, такой как Velocity, так как в то время возможна сложная логика в xslt - это боль.