Support XML element name based on runtime type
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- java
- Bereich
- backend-api-design
Rechercherichtung
Beginne mit dem Java-Modell und dem XSD-Beispiel für eine Substitutionsgruppe und untersuche anschließend, wie Jackson-XML-Annotationen derzeit Elementnamen während der Serialisierung und Deserialisierung bestimmen. Vergleiche die XML-Instanzen von cow und goat mit dem gewünschten Verhalten des Laufzeittyps; erledigt ist die Aufgabe, wenn beide Formen dem passenden Animal-Subtyp zugeordnet werden und bei der Serialisierung wieder den entsprechenden Elementnamen verwenden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
XSD schema's support a way to name an element based on its runtime type through substitution groups. I'm trying to deserialise such a substitution group. Is this supported in some way?
Example. Suppose there is two types of Animals: Cows and Goats. Based on their type, I want their element to be named either cow or goat. This would be modelled as follows:
XSD:
<!-- XML root element -->
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element ref="animal"/> <!-- Note that the name of this element is determined by the actual type of animal -->
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Element names: `Cow`s should be serialised as an element named `cow`, `Goat`s should be serialised as an element named `goat`. -->
<xs:element name="animal" type="Animal" abstract="true" />
<xs:element name="cow" type="Cow" substitutionGroup="animal" />
<xs:element name="goat" type="Goat" substitutionGroup="animal" />
<!-- Types: `Cow` and `Goat` extend from `Animal` -->
<xs:complexType name="Animal">
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
<xs:complexType name="Cow">
<xs:complexContent>
<xs:extension base="Animal" />
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Goat">
<xs:complexContent>
<xs:extension base="Animal" />
</xs:complexContent>
</xs:complexType>
XML example instances:
<document>
<cow name="Cow1" />
</document>
<document>
<goat name="Goat1" />
</document>
Java model:
@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?
- Vorherrschende Sprache
- Java
- Sterne
- 636
- Forks
- 250
- Ø Merge
- 7 Std. 10 Min.
- Gemergte PRs (30 T.)
- 8
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus FasterXML/jackson-dataformat-xml
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
FasterXML/jackson-dataformat-xml#931 · 3 Kommentare ·
-
XmlMapper with `FAIL_ON_UNKNOWN_PROPERTIES` fails on whitespace-only elementEvtl. vergeben @arimu1 hat das vor 89 Tagen übernommen. Offento-evaluate
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
-
3.x
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
FasterXML/jackson-dataformat-xml#787 · 1 Kommentar ·
Alle Issues in FasterXML/jackson-dataformat-xml
Ähnliche Issues
-
Cleanup: restore the interrupt flag in AiFailureAnalyzerEvtl. vergeben @Rishankgupta08 hat das heute übernommen. Offengood first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
seleniumboot/selenium-boot#258 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
dense-analysis/ale#5181 ·
-
bug subsystem:agent-harness triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
ShaftHQ/SHAFT_ENGINE#8043 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
johanhaleby/occurrent#1505 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag