使用Castor使用映射文件将以下xml解析为POJO非常简单:
<human name="bob"/>
<dog owner="alice"/>
它使用元素的名称映射到类。但是,如果应该使用属性来进行映射呢? e.g:
<animal type="human" name="bob"/>
<animal type="dog" owner="alice"/>
这个人为的例子基于我必须消费的XML(因为我没有创作它!)。有关如何使用Castor映射文件处理此问题的任何想法?
答案 0 :(得分:0)
有两种方法可以解决这个问题。更改您的Java类结构以使人类和狗扩展动物,然后为Animal编写映射文件。
或者只是使用XSLT来转换数据。这样的事情可能有用:
<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>