Ich habe eine XSD, die die SOAP-Nachrichten für ein Remote-Gerät definiert. Ich möchte diese XSD nehmen und daraus Java-Quellcode generieren, um diese Nachrichten zu erstellen. Ein Beispiel für eine Nachricht in der XSD ist:Generieren von Java-Quelle aus einer XSD, die SOAP-Nachrichten definiert
<xs:element name="get-ethernet-stats">
<xs:annotation>
<xs:documentation>Ethernet stats information</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="mode" type="response-mode"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="get-ethernet-stats-resp">
<xs:complexType>
<xs:annotation>
<xs:documentation>Ethernet Stats</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="status"/>
<xs:element name="result" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="rx" type="xs:int"/>
<xs:element name="tx" type="xs:int"/>
<xs:element name="drops" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Haben Sie Vorschläge, wie Sie dies tun? Ich habe in JAXB aussah, aber ich nicht die ursprünglichen Quelldateien haben, und wenn ich „xjc file.xsd“ laufen, hier die Quelldateien zu erhalten, ist Teil der Ausgabe:
parsing a schema...
compiling a schema...
[ERROR] A class/interface with the same name "file.MemosReceipt" is already in use. Use a class customization to resolve this conflict.
line 7669 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] (Relevant to above error) another "MemosReceipt" is generated from here.
line 8242 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] A class/interface with the same name "file.InstructionsReceipt" is already in use. Use a class customization to resolve this conflict.
line 7720 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] (Relevant to above error) another "InstructionsReceipt" is generated from here.
line 8341 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 7686 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] (Related to above error) This is the other declaration.
line 8267 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 8626 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
[ERROR] (Related to above error) This is the other declaration.
line 6114 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd
Failed to produce code.
ich nicht genau sehen, wie dies hilft. Ich verstehe, dass es mir helfen wird, den SOAP-Umschlag zu generieren, aber basierend auf meinem Verständnis werde ich den Körper generieren müssen. Um den Körper zu generieren, muss ich wissen, welche Nachricht zu senden und zu tun, dass ich die entsprechenden Klassen aus dem XSD generieren muss, um den Inhalt des Körpers – rwb7041
Nun, nicht sicher, dann genau das, was Sie suchen, aber Die Art, wie ich es benutze, ist ein neues DOM-Dokument zu erstellen, es nach den XSD-Spezifikationen und spezifischen Details zu füllen (Code-Generierung kann hier helfen, aber warum) und das DOM in XML umwandeln und es an eine neue Instanz von 'javax übergeben. xml.ws.Service ", wobei Port, Service, XML und WSDL-URL für die' createDispatch'-Methode bereitgestellt werden. – Maestro13
Ich habe kein WSDL-Dokument, das hilft also überhaupt nicht – rwb7041