2010-01-19 7 views
1

utilisant Castor pour analyser le code XML suivant dans POJO en utilisant un fichier de mappage est assez simple:utilisant Castor pour analyser XML en fonction des valeurs d'attribut

<human name="bob"/> 
<dog owner="alice"/> 

Il utilise le nom de l'élément à la carte à la classe. Mais que faire si un attribut doit être utilisé pour faire la cartographie? .: par exemple

<animal type="human" name="bob"/> 
<animal type="dog" owner="alice"/> 

Cet exemple est basé sur artificiel XML que je dois consommer (quoique je ne est pas l'auteur!). Des idées sur la façon d'aborder cela avec des fichiers de mapping Castor?

Répondre

0

Il y a deux façons d'aborder cela. Changez votre structure de classe Java pour que l'humain et le chien étendent l'animal, puis écrivez un fichier de mapping pour Animal.

Ou simplement utiliser XSLT pour transformer vos données. Quelque chose comme ça pourrait fonctionner:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="animal"> 
    <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text> 
     <xsl:value-of select="@type" /><xsl:text disable-output-escaping="yes"> </xsl:text>name="<xsl:value-of select="@name" />" 
    <xsl:text disable-output-escaping="yes"><![CDATA[/>]]></xsl:text> 
</xsl:template> 
</xsl:stylesheet>