FasterXML / FasterXML/jackson-dataformat-xml

Support XML element name based on runtime type

Open
#679 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
631
Forks
246
Avg merge
7d 9h
Merged PRs (30d)
13

Description

XSD schema's support a way to name an element based on its runtime type through [*substitution groups*](https://www.w3.org/TR/xmlschema-1/#key-equivalenceClass). I'm trying to deserialise such a substitution group. Is this supported in some way?

Example. Suppose there is two types of `Animal`s: `Cow`s and `Goat`s. Based on their type, I want their element to be named either `cow` or `goat`. This would be modelled as follows:

XSD:
``` xml









```

XML example instances:
``` xml

```
``` xml

```

Java model:
``` java
@XmlRootElement(name="document")
public class Document {
private Animal animal;

public Animal getAnimal() {
return animal;
}
public void setAnimal(Animal animal) {
this.animal = animal;
}
}

public class Animal {
@JacksonXmlProperty(isAttribute = true)
private String name;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

public class Cow extends Animal {}

public class Goat extends Animal {}
```

Is there a way of annotating the classes to get the desired behaviour?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.