Dynamische java-bean von xsd
Ich habe zwei Anwendungen, fungiert als client und der andere als server. In der server-Anwendung, die ich generieren ObjectFactory und-Klassen mit xjc von Eclipse. Als Ergebnis einer dieser Klassen aufgerufen wird widgetEvenCall. Aus der xsd-Datei:
...
<xs:element name="widgetEventCall">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="tns:widgetEventDescriptor" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:widgetParameter" />
</xs:sequence>
</xs:complexType>
</xs:element>
JAXB xjc generiert die Klassen WidgetEventCall, WidgetEventDescriptor und WidgetParameter, mit deren Getter und setter.
Die client-Anwendung, die nicht haben, weder die Klassen noch die ObjectFactory, Anrufe aus der Ferne ein Dienst auf server-Anwendung, bekommen als Ergebnis eine XML wie:
. . .
<widgetEventCall>
<widgetEventDescriptor> ... </widgetEventDescriptor>
<widgetParameter>...</widgetParameter>
<widgetParameter>...</widgetParameter>
. . .
</widgetEventCall>
Glücklicherweise client-Anwendung Zugriff auf die .xsd-definition. Meine Frage ist: Ist es möglich, dass der xml-Inhalt und die xsd-definition zu erstellen, die Objekte für widgetEventCall, widgetEventDescriptor und widgetParameter wie wenn Sie erstellt wurden, xjc, einschließlich Getter und setter, halten Sie die client-Anwendung ohne wissen über Sie, indem es nur die Reflexion? Gibt es einen automatisierten Weg, um das zu erreichen?
mein Ziel ist es, mit diesem Ergebnis in eine JSP-Datei, d.h. setzen Sie das Objekt in den request und auf es wie widgetEventCall.widgetParameter[0].someProperty, so brauche ich die Getter generiert werden.
Vielen Dank im Voraus.
Joan.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie EclipseLink MOXy's Dynamische JAXB für diesen Anwendungsfall (ich bin die MOXy-tech-lead).
Erstellung der Dynamischen JAXB-Kontext:
Den JAXBContext werden kann bootstrapped aus einem XML:
Unmarshal XML:
Dann nutzen Sie einen unmarshaller, der zum konvertieren der XML-Daten in Objekte:
Mit den Daten interagieren:
Die Instanz des DynamicEntity man wieder ein generisches Objekt mit get/set-Methoden, die eine Eigenschaft name. Der name der Eigenschaft entspricht, was gewesen wäre, erzeugt das statische Klasse, die von XJC.
Marschall Objekt:
Dann verwenden Sie ein marshaller zum konvertieren der XML-Daten in Objekte:
Weitere Informationen finden Sie unter: