Java/JAXB: Unmarshall Xml to specific subclass based on an attribute

Posted by Frothy on Stack Overflow See other posts from Stack Overflow or by Frothy
Published on 2010-06-07T18:53:28Z Indexed on 2010/06/07 19:02 UTC
Read the original article Hit count: 244

Filed under:
|
|

Is it possible to use JAXB to unmarshall xml to a specific Java class based on an attribute of the xml?

<shapes>
  <shape type="square" points="4" square-specific-attribute="foo" />
  <shape type="triangle" points="3" triangle-specific-attribute="bar" />
</shapes>

I would like to have a List of Shape objects containing a triangle and a square, each with their own shape-specific attribute. IE:

abstract class Shape {
    int points;
    //...etc
}

class Square extends Shape {
    String square-specific-attribute;
    //...etc
}

class Triangle extends Shape {
    String triangle-specific-attribute;
    //...etc
}

I'm currently just putting all attributes in one big "Shape" class and it's less than ideal.

I could get this to work if the shapes were properly named xml elements, but unfortunately I don't have control of the xml I'm retrieving.

Thanks!

© Stack Overflow or respective owner

Related posts about java

Related posts about inheritance