Die Intersult liefert die wohl führenden XML- und SOAP-Werkzeuge im Java-Bereich. Das XML-Paket kann unter Maven 2 direkt aus dem Intersult Maven Repository integriert werden.
Neben primitiven Datentypen und verschachtelten Typen serialisiert der Marshaller auch Arrays, Lists und Maps.
Der XmlUnmarshaller wandelt serialisierte XML-Dateien zurück in Java-Klassen. Das Unmarshalling ist dabei genauso unkompliziert wie das Marshalling. Pojos sind ausreichend, mit Annotationen können zusätzliche Features gesteuert werden.
Folgendes Code-Beispiel zeigt einen Unmarshal-Marshal-Roundtrip:
String stringInput = IOUtils.toString(getClass().getResourceAsStream("Foo.xml")); Foo foo = (Foo)MarshalUtils.unmarshall(stringInput); String stringOutput = MarshalUtils.marshall(foo);
Ein weiteres Beispiel für Unmarshalling:
String input = "Test"; String xml = "<java.lang.String>" + input + "</java.lang.String>"; String output = (String)MarshalUtils.unmarshall(xml);
<project> ... <build> ... <plugins> ... <plugin> <groupId>com.intersult</groupId> <artifactId>com.intersult.maven</artifactId> <executions> <execution> <goals> <goal>generate-schema</goal> </goals> <configuration> <schemas> <schema> <xsdPath>${project.build.directory}/generated/schema</xsdPath> <xsd>file:/${basedir}/src/main/resources/XMLSchema.xsd</xsd> <xsdPackage>org.w3.schema</xsdPackage> </schema> </schemas> </configuration> </execution> </executions> </plugin> ... </plugin> ... </build> ... </project>
Die Generierung ist in den Maven2-Build-Zyklus integriert. Dadurch wird der Code zu genau dem richtigen Zeitpunkt generiert und erscheint z.B. auch in Eclipse-Projekten als Source-Folder.
<project> ... <build> ... <plugins> ... <plugin> <groupId>com.intersult</groupId> <artifactId>com.intersult.maven</artifactId> <executions> <execution> <goals> <goal>generate-ws</goal> </goals> <configuration> <services> <service> <outputPath>${project.build.directory}/generated/weather</outputPath> <wsdl>file:/${basedir}/src/main/resources/globalweather.wsdl</wsdl> <packageName>net.webservicex.globalweather</packageName> </service> </services> </configuration> </execution> </executions> </plugin> ... </plugin> ... </build> ... </project>