On Fri, Apr 27, 2018 at 1:53 AM, Rupert Madden-Abbott
<[email protected]> wrote:
> How can I turn this XML:
>
> <units>
>   <unit name="maths-101" points="120"/>
>   <unit name="english-101" points="60"/>
> </units>
>
> <students>
>   <student>
>     <unit name="maths-101"/>
>     <unit name="english-101"/>
>   </student>
>   <student>
>     <unit name="english-101"/>
>   </student>
> </students>
>
> into something like this Java:
> class Student {
>   private List<Unit> units;
>
>   public List<Unit> getUnits() {
>     return units;
>   }
>
>   public void setUnits(final List<Unit> units) {
>     this.units = units;
>   }
> }
>
> class Unit {
>   private String name;
>
>   private Integer points;
>
>   public String getName() {
>     return name;
>   }
>
>   public void setName(final String name) {
>     this.name = name;
>   }
>
>   public Integer getPoints() {
>     return points;
>   }
>
>   public void setPoints(final Integer points) {
>     this.points = points;
>   }
> }
>
>
> After deserializing, I want to be able to retrieve the points for a Unit,
> directly from a student (e.g. student.getUnit().getPoints()) and do not want
> to have to look up the unit by name from a separate list of units.
>
> I have tried the solution suggested in this StackOverflow Answer but I get
> an error saying "Already had POJO for id (java.lang.String) [[ObjectId:
> key=foo,
> type=com.fasterxml.jackson.databind.deser.impl.PropertyBasedObjectIdGenerator,
> scope=Unit]]. I'm not sure if that only works for JSON or if I need a
> slightly different XML/Java structure to get this working?

Perhaps you could share code you are using, as it sounds like you are
half way there.
It is true that much of more advanced functionality has been mostly
tested on JSON side,
and that XML is unfortunately bit tricky to get to work due to model
differences.
But Object Identity support should work similarly and it does work at
least in some cases;
there are unit test for `jackson-dataformat-xml` that work.

-+ Tatu +-

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to