Jaxb komplexe xml-unmarshall
Ich bin Probleme zu unmarshall geschachtelte xml-unten. Kann jemand bitte beraten, wenn mir etwas fehlt.
body
- tag können beliebige Jaxb anotated obj.
Muss ich zum erstellen eines benutzerdefinierten adapter für marshalling/unmarshalling solche xml?
XML-Input -
<?xml version="1.0" encoding="UTF-8"?>
<serviceRq xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="serviceRq">
<body>
<createRq>
<id>1234</id>
</createRq>
</body>
</serviceRq>
Mein Jaxb-annotierten Klassen sind:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "serviceRq")
public class ServiceRq{
private Object body;
<!-- getters and setters omitted-->
}
Hier Körper kann jede jaxb annotierte Objekt, in diesem Fall seiner CreateRq.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "createRq")
public class CreateRq{
private String id;
<!-- getters and setters omitted-->
}
Ich bin auf der Suche nach einer generischen Art und Weise zu unterstützen Jaxb annotierte Objekt im Körper des Eingabe-xml an.
InformationsquelleAutor BSingh | 2011-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man eine
@XmlAnyElement(lax=true)
und einXmlAdapter
um dies zu umgehen, use-case:ServiceRq
BodyAdapter
Körper
CreateRq
Demo
Weitere Informationen
Wenn wir lax auf false (Standardeinstellung), wird Es erstellt ein dom-Objekt aus dem xml-Inhalt und wird nicht versuchen, die Karte auf ein bekanntes Objekt?
InformationsquelleAutor bdoughan
Könnten Sie
@XmlAnyElement(lax=true)
und die@XmlPath
Erweiterung in EclipseLink JAXB (MOXy) um dies zu umgehen, verwenden Fall (Anmerkung: ich bin der MOXy führen). Für ein Ansatz wäre das arbeiten mit einem JAXB-Implementierung (U-Bahn, MOXy, JaxMe, etc) finden Sie unter: Jaxb komplexe xml-unmarshall.ServiceRq
CreateRq
Demo
jaxb.Eigenschaften
Verwenden, MOXy, wie Ihr JAXB-provider müssen Sie eine Datei mit jaxb.Eigenschaften in der gleichen Verpackung wie Ihre domain Modell mit dem folgenden Eintrag:
Weitere Informationen
InformationsquelleAutor bdoughan